From e54bd316d55db6b4351b236fc05fe842510bafa7 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Sat, 25 Nov 2023 17:40:08 +0000 Subject: [PATCH] iOS OpenSSL => 3.2.0. git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4645 ed5197a5-7fde-0310-b194-c3ffbd925b24 --- .../usr/local/include/crypto/aes_platform.h | 33 +- .../usr/local/include/crypto/asn1.h | 12 +- .../usr/local/include/crypto/bioerr.h | 2 +- .../ios64-xcrun/usr/local/include/crypto/bn.h | 9 + .../usr/local/include/crypto/cmserr.h | 2 +- .../usr/local/include/crypto/context.h | 6 + .../usr/local/include/crypto/decoder.h | 12 +- .../usr/local/include/crypto/dherr.h | 2 +- .../usr/local/include/crypto/dsa.h | 4 +- .../ios64-xcrun/usr/local/include/crypto/ec.h | 8 +- .../usr/local/include/crypto/ecx.h | 34 +- .../usr/local/include/crypto/encoder.h | 2 +- .../usr/local/include/crypto/evp.h | 28 +- .../usr/local/include/crypto/evperr.h | 2 +- .../usr/local/include/crypto/md32_common.h | 96 +- .../usr/local/include/crypto/modes.h | 12 + .../usr/local/include/crypto/pkcs12err.h | 2 +- .../usr/local/include/crypto/punycode.h | 4 +- .../usr/local/include/crypto/rand.h | 11 + .../usr/local/include/crypto/riscv_arch.h | 7 +- .../usr/local/include/crypto/rsa.h | 8 +- .../usr/local/include/crypto/sha.h | 3 +- .../usr/local/include/crypto/sm4_platform.h | 40 +- .../usr/local/include/crypto/store.h | 2 +- .../usr/local/include/crypto/x509.h | 8 +- .../usr/local/include/crypto/x509err.h | 2 +- .../usr/local/include/internal/asn1.h | 2 + .../usr/local/include/internal/bio.h | 10 + .../usr/local/include/internal/bio_addr.h | 29 + .../usr/local/include/internal/bio_tfo.h | 151 +++ .../usr/local/include/internal/common.h | 217 ++++ .../usr/local/include/internal/comp.h | 2 + .../usr/local/include/internal/cryptlib.h | 93 +- .../usr/local/include/internal/der.h | 76 +- .../include/internal/deterministic_nonce.h | 24 + .../usr/local/include/internal/e_os.h | 58 +- .../usr/local/include/internal/endian.h | 4 +- .../usr/local/include/internal/event_queue.h | 163 +++ .../usr/local/include/internal/ffc.h | 11 +- .../usr/local/include/internal/hpke_util.h | 100 ++ .../usr/local/include/internal/ktls.h | 26 +- .../usr/local/include/internal/list.h | 169 ++++ .../usr/local/include/internal/namemap.h | 2 +- .../usr/local/include/internal/numbers.h | 27 +- .../usr/local/include/internal/packet.h | 4 +- .../usr/local/include/internal/packet_quic.h | 150 +++ .../local/include/internal/param_build_set.h | 7 +- .../usr/local/include/internal/param_names.h | 376 +++++++ .../local/include/internal/param_names.h.in | 18 + .../usr/local/include/internal/params.h | 38 + .../local/include/internal/priority_queue.h | 88 ++ .../usr/local/include/internal/property.h | 2 +- .../usr/local/include/internal/provider.h | 4 +- .../usr/local/include/internal/quic_ackm.h | 297 ++++++ .../usr/local/include/internal/quic_cc.h | 219 ++++ .../usr/local/include/internal/quic_cfq.h | 154 +++ .../usr/local/include/internal/quic_channel.h | 429 ++++++++ .../usr/local/include/internal/quic_demux.h | 364 +++++++ .../usr/local/include/internal/quic_error.h | 56 ++ .../usr/local/include/internal/quic_fc.h | 277 +++++ .../usr/local/include/internal/quic_fifd.h | 80 ++ .../usr/local/include/internal/quic_reactor.h | 188 ++++ .../local/include/internal/quic_record_rx.h | 569 +++++++++++ .../local/include/internal/quic_record_tx.h | 383 +++++++ .../local/include/internal/quic_record_util.h | 116 +++ .../local/include/internal/quic_rx_depack.h | 21 + .../usr/local/include/internal/quic_sf_list.h | 151 +++ .../usr/local/include/internal/quic_ssl.h | 132 +++ .../usr/local/include/internal/quic_statm.h | 40 + .../usr/local/include/internal/quic_stream.h | 429 ++++++++ .../local/include/internal/quic_stream_map.h | 878 ++++++++++++++++ .../include/internal/quic_thread_assist.h | 102 ++ .../usr/local/include/internal/quic_tls.h | 106 ++ .../usr/local/include/internal/quic_tserver.h | 220 ++++ .../usr/local/include/internal/quic_txp.h | 209 ++++ .../usr/local/include/internal/quic_txpim.h | 133 +++ .../usr/local/include/internal/quic_types.h | 116 +++ .../usr/local/include/internal/quic_vlint.h | 127 +++ .../usr/local/include/internal/quic_wire.h | 784 +++++++++++++++ .../local/include/internal/quic_wire_pkt.h | 629 ++++++++++++ .../usr/local/include/internal/recordmethod.h | 339 +++++++ .../usr/local/include/internal/refcount.h | 191 +++- .../usr/local/include/internal/ring_buf.h | 277 +++++ .../usr/local/include/internal/safe_math.h | 443 ++++++++ .../usr/local/include/internal/sockets.h | 33 +- .../usr/local/include/internal/ssl.h | 24 + .../usr/local/include/internal/ssl3_cbc.h | 40 + .../usr/local/include/internal/statem.h | 171 ++++ .../usr/local/include/internal/thread.h | 39 + .../usr/local/include/internal/thread_arch.h | 127 +++ .../usr/local/include/internal/time.h | 242 +++++ .../usr/local/include/internal/tlsgroups.h | 10 + .../usr/local/include/internal/tsan_assist.h | 137 +-- .../usr/local/include/internal/uint_set.h | 63 ++ .../usr/local/include/openssl/asn1.h | 6 +- .../usr/local/include/openssl/asn1.h.in | 6 +- .../usr/local/include/openssl/async.h | 10 +- .../usr/local/include/openssl/bio.h | 143 ++- .../usr/local/include/openssl/bio.h.in | 143 ++- .../usr/local/include/openssl/bioerr.h | 9 +- .../usr/local/include/openssl/bn.h | 6 + .../usr/local/include/openssl/cmp.h | 42 +- .../usr/local/include/openssl/cmp.h.in | 42 +- .../usr/local/include/openssl/cmperr.h | 4 + .../usr/local/include/openssl/cms.h | 35 +- .../usr/local/include/openssl/cms.h.in | 35 +- .../usr/local/include/openssl/cmserr.h | 1 + .../usr/local/include/openssl/comp.h | 9 +- .../usr/local/include/openssl/comperr.h | 7 + .../usr/local/include/openssl/conf.h | 2 +- .../usr/local/include/openssl/conf.h.in | 2 +- .../usr/local/include/openssl/configuration.h | 38 +- .../local/include/openssl/configuration.h.in | 6 + .../usr/local/include/openssl/core.h | 5 +- .../usr/local/include/openssl/core_dispatch.h | 24 + .../usr/local/include/openssl/core_names.h | 950 ++++++++---------- .../usr/local/include/openssl/core_names.h.in | 119 +++ .../usr/local/include/openssl/crmf.h | 10 +- .../usr/local/include/openssl/crmf.h.in | 10 +- .../usr/local/include/openssl/crypto.h | 5 +- .../usr/local/include/openssl/crypto.h.in | 5 +- .../usr/local/include/openssl/ct.h | 2 +- .../usr/local/include/openssl/ct.h.in | 2 +- .../usr/local/include/openssl/dh.h | 6 +- .../usr/local/include/openssl/dherr.h | 4 +- .../usr/local/include/openssl/dsa.h | 2 +- .../usr/local/include/openssl/e_os2.h | 4 +- .../usr/local/include/openssl/e_ostime.h | 30 + .../usr/local/include/openssl/ec.h | 22 +- .../usr/local/include/openssl/err.h | 9 +- .../usr/local/include/openssl/err.h.in | 9 +- .../usr/local/include/openssl/evp.h | 36 +- .../usr/local/include/openssl/evperr.h | 5 +- .../usr/local/include/openssl/hpke.h | 169 ++++ .../usr/local/include/openssl/http.h | 6 +- .../usr/local/include/openssl/lhash.h | 2 +- .../usr/local/include/openssl/lhash.h.in | 2 +- .../usr/local/include/openssl/macros.h | 3 +- .../usr/local/include/openssl/obj_mac.h | 349 ++++++- .../usr/local/include/openssl/opensslv.h | 12 +- .../usr/local/include/openssl/pem.h | 3 +- .../usr/local/include/openssl/pkcs12.h | 12 +- .../usr/local/include/openssl/pkcs12.h.in | 12 +- .../usr/local/include/openssl/pkcs12err.h | 3 +- .../usr/local/include/openssl/pkcs7.h | 16 +- .../usr/local/include/openssl/pkcs7.h.in | 16 +- .../usr/local/include/openssl/prov_ssl.h | 6 +- .../usr/local/include/openssl/proverr.h | 4 + .../usr/local/include/openssl/provider.h | 10 +- .../usr/local/include/openssl/quic.h | 37 + .../usr/local/include/openssl/rand.h | 2 +- .../usr/local/include/openssl/rsa.h | 7 +- .../usr/local/include/openssl/sha.h | 3 +- .../usr/local/include/openssl/srtp.h | 28 +- .../usr/local/include/openssl/ssl.h | 195 +++- .../usr/local/include/openssl/ssl.h.in | 195 +++- .../usr/local/include/openssl/ssl3.h | 12 +- .../usr/local/include/openssl/sslerr.h | 26 +- .../usr/local/include/openssl/store.h | 12 +- .../usr/local/include/openssl/thread.h | 31 + .../usr/local/include/openssl/tls1.h | 34 +- .../usr/local/include/openssl/trace.h | 10 +- .../usr/local/include/openssl/ts.h | 2 +- .../usr/local/include/openssl/types.h | 2 +- .../usr/local/include/openssl/x509.h | 15 +- .../usr/local/include/openssl/x509.h.in | 15 +- .../usr/local/include/openssl/x509_vfy.h | 119 +-- .../usr/local/include/openssl/x509_vfy.h.in | 119 +-- .../usr/local/include/openssl/x509err.h | 2 +- .../usr/local/include/openssl/x509v3.h | 3 +- .../usr/local/include/openssl/x509v3.h.in | 3 +- .../usr/local/include/openssl/x509v3err.h | 5 +- .../ios/ios64-xcrun/usr/local/lib/libcrypto.a | Bin 6842784 -> 7665488 bytes .../ios/ios64-xcrun/usr/local/lib/libssl.a | Bin 972448 -> 1416968 bytes .../usr/local/include/crypto/aes_platform.h | 33 +- .../usr/local/include/crypto/asn1.h | 12 +- .../usr/local/include/crypto/bioerr.h | 2 +- .../usr/local/include/crypto/bn.h | 9 + .../usr/local/include/crypto/cmserr.h | 2 +- .../usr/local/include/crypto/context.h | 6 + .../usr/local/include/crypto/decoder.h | 12 +- .../usr/local/include/crypto/dherr.h | 2 +- .../usr/local/include/crypto/dsa.h | 4 +- .../usr/local/include/crypto/ec.h | 8 +- .../usr/local/include/crypto/ecx.h | 34 +- .../usr/local/include/crypto/encoder.h | 2 +- .../usr/local/include/crypto/evp.h | 28 +- .../usr/local/include/crypto/evperr.h | 2 +- .../usr/local/include/crypto/md32_common.h | 96 +- .../usr/local/include/crypto/modes.h | 12 + .../usr/local/include/crypto/pkcs12err.h | 2 +- .../usr/local/include/crypto/punycode.h | 4 +- .../usr/local/include/crypto/rand.h | 11 + .../usr/local/include/crypto/riscv_arch.h | 7 +- .../usr/local/include/crypto/rsa.h | 8 +- .../usr/local/include/crypto/sha.h | 3 +- .../usr/local/include/crypto/sm4_platform.h | 40 +- .../usr/local/include/crypto/store.h | 2 +- .../usr/local/include/crypto/x509.h | 8 +- .../usr/local/include/crypto/x509err.h | 2 +- .../usr/local/include/internal/asn1.h | 2 + .../usr/local/include/internal/bio.h | 10 + .../usr/local/include/internal/bio_addr.h | 29 + .../usr/local/include/internal/bio_tfo.h | 151 +++ .../usr/local/include/internal/common.h | 217 ++++ .../usr/local/include/internal/comp.h | 2 + .../usr/local/include/internal/cryptlib.h | 93 +- .../usr/local/include/internal/der.h | 76 +- .../include/internal/deterministic_nonce.h | 24 + .../usr/local/include/internal/e_os.h | 58 +- .../usr/local/include/internal/endian.h | 4 +- .../usr/local/include/internal/event_queue.h | 163 +++ .../usr/local/include/internal/ffc.h | 11 +- .../usr/local/include/internal/hpke_util.h | 100 ++ .../usr/local/include/internal/ktls.h | 26 +- .../usr/local/include/internal/list.h | 169 ++++ .../usr/local/include/internal/namemap.h | 2 +- .../usr/local/include/internal/numbers.h | 27 +- .../usr/local/include/internal/packet.h | 4 +- .../usr/local/include/internal/packet_quic.h | 150 +++ .../local/include/internal/param_build_set.h | 7 +- .../usr/local/include/internal/param_names.h | 376 +++++++ .../local/include/internal/param_names.h.in | 18 + .../usr/local/include/internal/params.h | 38 + .../local/include/internal/priority_queue.h | 88 ++ .../usr/local/include/internal/property.h | 2 +- .../usr/local/include/internal/provider.h | 4 +- .../usr/local/include/internal/quic_ackm.h | 297 ++++++ .../usr/local/include/internal/quic_cc.h | 219 ++++ .../usr/local/include/internal/quic_cfq.h | 154 +++ .../usr/local/include/internal/quic_channel.h | 429 ++++++++ .../usr/local/include/internal/quic_demux.h | 364 +++++++ .../usr/local/include/internal/quic_error.h | 56 ++ .../usr/local/include/internal/quic_fc.h | 277 +++++ .../usr/local/include/internal/quic_fifd.h | 80 ++ .../usr/local/include/internal/quic_reactor.h | 188 ++++ .../local/include/internal/quic_record_rx.h | 569 +++++++++++ .../local/include/internal/quic_record_tx.h | 383 +++++++ .../local/include/internal/quic_record_util.h | 116 +++ .../local/include/internal/quic_rx_depack.h | 21 + .../usr/local/include/internal/quic_sf_list.h | 151 +++ .../usr/local/include/internal/quic_ssl.h | 132 +++ .../usr/local/include/internal/quic_statm.h | 40 + .../usr/local/include/internal/quic_stream.h | 429 ++++++++ .../local/include/internal/quic_stream_map.h | 878 ++++++++++++++++ .../include/internal/quic_thread_assist.h | 102 ++ .../usr/local/include/internal/quic_tls.h | 106 ++ .../usr/local/include/internal/quic_tserver.h | 220 ++++ .../usr/local/include/internal/quic_txp.h | 209 ++++ .../usr/local/include/internal/quic_txpim.h | 133 +++ .../usr/local/include/internal/quic_types.h | 116 +++ .../usr/local/include/internal/quic_vlint.h | 127 +++ .../usr/local/include/internal/quic_wire.h | 784 +++++++++++++++ .../local/include/internal/quic_wire_pkt.h | 629 ++++++++++++ .../usr/local/include/internal/recordmethod.h | 339 +++++++ .../usr/local/include/internal/refcount.h | 191 +++- .../usr/local/include/internal/ring_buf.h | 277 +++++ .../usr/local/include/internal/safe_math.h | 443 ++++++++ .../usr/local/include/internal/sockets.h | 33 +- .../usr/local/include/internal/ssl.h | 24 + .../usr/local/include/internal/ssl3_cbc.h | 40 + .../usr/local/include/internal/statem.h | 171 ++++ .../usr/local/include/internal/thread.h | 39 + .../usr/local/include/internal/thread_arch.h | 127 +++ .../usr/local/include/internal/time.h | 242 +++++ .../usr/local/include/internal/tlsgroups.h | 10 + .../usr/local/include/internal/tsan_assist.h | 137 +-- .../usr/local/include/internal/uint_set.h | 63 ++ .../usr/local/include/openssl/asn1.h | 6 +- .../usr/local/include/openssl/asn1.h.in | 6 +- .../usr/local/include/openssl/async.h | 10 +- .../usr/local/include/openssl/bio.h | 143 ++- .../usr/local/include/openssl/bio.h.in | 143 ++- .../usr/local/include/openssl/bioerr.h | 9 +- .../usr/local/include/openssl/bn.h | 6 + .../usr/local/include/openssl/cmp.h | 42 +- .../usr/local/include/openssl/cmp.h.in | 42 +- .../usr/local/include/openssl/cmperr.h | 4 + .../usr/local/include/openssl/cms.h | 35 +- .../usr/local/include/openssl/cms.h.in | 35 +- .../usr/local/include/openssl/cmserr.h | 1 + .../usr/local/include/openssl/comp.h | 9 +- .../usr/local/include/openssl/comperr.h | 7 + .../usr/local/include/openssl/conf.h | 2 +- .../usr/local/include/openssl/conf.h.in | 2 +- .../usr/local/include/openssl/configuration.h | 38 +- .../local/include/openssl/configuration.h.in | 6 + .../usr/local/include/openssl/core.h | 5 +- .../usr/local/include/openssl/core_dispatch.h | 24 + .../usr/local/include/openssl/core_names.h | 950 ++++++++---------- .../usr/local/include/openssl/core_names.h.in | 119 +++ .../usr/local/include/openssl/crmf.h | 10 +- .../usr/local/include/openssl/crmf.h.in | 10 +- .../usr/local/include/openssl/crypto.h | 5 +- .../usr/local/include/openssl/crypto.h.in | 5 +- .../usr/local/include/openssl/ct.h | 2 +- .../usr/local/include/openssl/ct.h.in | 2 +- .../usr/local/include/openssl/dh.h | 6 +- .../usr/local/include/openssl/dherr.h | 4 +- .../usr/local/include/openssl/dsa.h | 2 +- .../usr/local/include/openssl/e_os2.h | 4 +- .../usr/local/include/openssl/e_ostime.h | 30 + .../usr/local/include/openssl/ec.h | 22 +- .../usr/local/include/openssl/err.h | 9 +- .../usr/local/include/openssl/err.h.in | 9 +- .../usr/local/include/openssl/evp.h | 36 +- .../usr/local/include/openssl/evperr.h | 5 +- .../usr/local/include/openssl/hpke.h | 169 ++++ .../usr/local/include/openssl/http.h | 6 +- .../usr/local/include/openssl/lhash.h | 2 +- .../usr/local/include/openssl/lhash.h.in | 2 +- .../usr/local/include/openssl/macros.h | 3 +- .../usr/local/include/openssl/obj_mac.h | 349 ++++++- .../usr/local/include/openssl/opensslv.h | 12 +- .../usr/local/include/openssl/pem.h | 3 +- .../usr/local/include/openssl/pkcs12.h | 12 +- .../usr/local/include/openssl/pkcs12.h.in | 12 +- .../usr/local/include/openssl/pkcs12err.h | 3 +- .../usr/local/include/openssl/pkcs7.h | 16 +- .../usr/local/include/openssl/pkcs7.h.in | 16 +- .../usr/local/include/openssl/prov_ssl.h | 6 +- .../usr/local/include/openssl/proverr.h | 4 + .../usr/local/include/openssl/provider.h | 10 +- .../usr/local/include/openssl/quic.h | 37 + .../usr/local/include/openssl/rand.h | 2 +- .../usr/local/include/openssl/rsa.h | 7 +- .../usr/local/include/openssl/sha.h | 3 +- .../usr/local/include/openssl/srtp.h | 28 +- .../usr/local/include/openssl/ssl.h | 195 +++- .../usr/local/include/openssl/ssl.h.in | 195 +++- .../usr/local/include/openssl/ssl3.h | 12 +- .../usr/local/include/openssl/sslerr.h | 26 +- .../usr/local/include/openssl/store.h | 12 +- .../usr/local/include/openssl/thread.h | 31 + .../usr/local/include/openssl/tls1.h | 34 +- .../usr/local/include/openssl/trace.h | 10 +- .../usr/local/include/openssl/ts.h | 2 +- .../usr/local/include/openssl/types.h | 2 +- .../usr/local/include/openssl/x509.h | 15 +- .../usr/local/include/openssl/x509.h.in | 15 +- .../usr/local/include/openssl/x509_vfy.h | 119 +-- .../usr/local/include/openssl/x509_vfy.h.in | 119 +-- .../usr/local/include/openssl/x509err.h | 2 +- .../usr/local/include/openssl/x509v3.h | 3 +- .../usr/local/include/openssl/x509v3.h.in | 3 +- .../usr/local/include/openssl/x509v3err.h | 5 +- tools/ssl-ios | 2 +- 347 files changed, 27199 insertions(+), 2511 deletions(-) create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_addr.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_tfo.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/common.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/deterministic_nonce.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/event_queue.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/hpke_util.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/list.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet_quic.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h.in create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/params.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/priority_queue.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ackm.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cc.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cfq.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_channel.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_demux.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_error.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fc.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fifd.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_reactor.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_rx.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_tx.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_util.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_rx_depack.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_sf_list.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ssl.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_statm.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream_map.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_thread_assist.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tls.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tserver.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txp.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txpim.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_types.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_vlint.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire_pkt.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/recordmethod.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ring_buf.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/safe_math.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl3_cbc.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/statem.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread_arch.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/time.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/internal/uint_set.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h.in create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_ostime.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/hpke.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/quic.h create mode 100644 deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/thread.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_addr.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_tfo.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/common.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/deterministic_nonce.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/event_queue.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/hpke_util.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/list.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet_quic.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h.in create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/params.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/priority_queue.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ackm.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cc.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cfq.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_channel.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_demux.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_error.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fc.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fifd.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_reactor.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_rx.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_tx.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_util.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_rx_depack.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_sf_list.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ssl.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_statm.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream_map.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_thread_assist.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tls.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tserver.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txp.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txpim.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_types.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_vlint.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire_pkt.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/recordmethod.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ring_buf.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/safe_math.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl3_cbc.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/statem.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread_arch.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/time.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/uint_set.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h.in create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_ostime.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/hpke.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/quic.h create mode 100644 deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/thread.h diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/aes_platform.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/aes_platform.h index 87c35255..e641450b 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/aes_platform.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/aes_platform.h @@ -90,7 +90,7 @@ void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp, size_t len); # endif /* OPENSSL_SYS_AIX || OPENSSL_SYS_MACOSX */ # endif /* PPC */ -# if (defined(__arm__) || defined(__arm) || defined(__aarch64__)) +# if (defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(_M_ARM64)) # include "arm_arch.h" # if __ARM_MAX_ARCH__>=7 # if defined(BSAES_ASM) @@ -106,7 +106,7 @@ void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp, size_t len); # define HWAES_decrypt aes_v8_decrypt # define HWAES_cbc_encrypt aes_v8_cbc_encrypt # define HWAES_ecb_encrypt aes_v8_ecb_encrypt -# if __ARM_MAX_ARCH__>=8 && defined(__aarch64__) +# if __ARM_MAX_ARCH__>=8 && (defined(__aarch64__) || defined(_M_ARM64)) # define HWAES_xts_encrypt aes_v8_xts_encrypt # define HWAES_xts_decrypt aes_v8_xts_decrypt # endif @@ -114,36 +114,36 @@ void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp, size_t len); # define AES_PMULL_CAPABLE ((OPENSSL_armcap_P & ARMV8_PMULL) && (OPENSSL_armcap_P & ARMV8_AES)) # define AES_GCM_ENC_BYTES 512 # define AES_GCM_DEC_BYTES 512 -# if __ARM_MAX_ARCH__>=8 && defined(__aarch64__) +# if __ARM_MAX_ARCH__>=8 && (defined(__aarch64__) || defined(_M_ARM64)) # define AES_gcm_encrypt armv8_aes_gcm_encrypt # define AES_gcm_decrypt armv8_aes_gcm_decrypt # define AES_GCM_ASM(gctx) ((gctx)->ctr==aes_v8_ctr32_encrypt_blocks && \ (gctx)->gcm.funcs.ghash==gcm_ghash_v8) /* The [unroll8_eor3_]aes_gcm_(enc|dec)_(128|192|256)_kernel() functions * take input length in BITS and return number of BYTES processed */ -size_t aes_gcm_enc_128_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t aes_gcm_enc_128_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_enc_192_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t aes_gcm_enc_192_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_enc_256_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t aes_gcm_enc_256_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_dec_128_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t aes_gcm_dec_128_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_dec_192_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t aes_gcm_dec_192_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_dec_256_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t aes_gcm_dec_256_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_enc_128_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t unroll8_eor3_aes_gcm_enc_128_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_enc_192_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t unroll8_eor3_aes_gcm_enc_192_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_enc_256_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t unroll8_eor3_aes_gcm_enc_256_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_dec_128_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t unroll8_eor3_aes_gcm_dec_128_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_dec_192_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t unroll8_eor3_aes_gcm_dec_192_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_dec_256_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t unroll8_eor3_aes_gcm_dec_256_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); size_t armv8_aes_gcm_encrypt(const unsigned char *in, unsigned char *out, size_t len, const void *key, unsigned char ivec[16], u64 *Xi); @@ -434,7 +434,6 @@ void aes256_t4_xts_decrypt(const unsigned char *in, unsigned char *out, # elif defined(OPENSSL_CPUID_OBJ) && defined(__riscv) && __riscv_xlen == 64 /* RISC-V 64 support */ # include "riscv_arch.h" -# define RV64I_ZKND_ZKNE_CAPABLE (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) int rv64i_zkne_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key); @@ -447,8 +446,6 @@ void rv64i_zknd_decrypt(const unsigned char *in, unsigned char *out, # elif defined(OPENSSL_CPUID_OBJ) && defined(__riscv) && __riscv_xlen == 32 /* RISC-V 32 support */ # include "riscv_arch.h" -# define RV32I_ZKND_ZKNE_CAPABLE (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) -# define RV32I_ZBKB_ZKND_ZKNE_CAPABLE (RV32I_ZKND_ZKNE_CAPABLE && RISCV_HAS_ZBKB()) int rv32i_zkne_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/asn1.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/asn1.h index ec76ae6f..36af1d76 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/asn1.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/asn1.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -142,8 +142,12 @@ X509_ALGOR *ossl_x509_algor_mgf1_decode(X509_ALGOR *alg); int ossl_x509_algor_md_to_mgf1(X509_ALGOR **palg, const EVP_MD *mgf1md); int ossl_asn1_time_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); -EVP_PKEY * ossl_d2i_PrivateKey_legacy(int keytype, EVP_PKEY **a, - const unsigned char **pp, long length, - OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *ossl_d2i_PrivateKey_legacy(int keytype, EVP_PKEY **a, + const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +X509_ALGOR *ossl_X509_ALGOR_from_nid(int nid, int ptype, void *pval); + +time_t ossl_asn1_string_to_time_t(const char *asn1_string); +void ossl_asn1_string_set_bits_left(ASN1_STRING *str, unsigned int num); #endif /* ndef OSSL_CRYPTO_ASN1_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bioerr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bioerr.h index a0c06099..e38b981a 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bioerr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bioerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bn.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bn.h index 00544d9d..33f979ce 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bn.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/bn.h @@ -116,4 +116,13 @@ OSSL_LIB_CTX *ossl_bn_get_libctx(BN_CTX *ctx); extern const BIGNUM ossl_bn_inv_sqrt_2; +#if defined(OPENSSL_SYS_LINUX) && !defined(FIPS_MODULE) && defined (__s390x__) +# define S390X_MOD_EXP +#endif + +int s390x_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int s390x_crt(BIGNUM *r, const BIGNUM *i, const BIGNUM *p, const BIGNUM *q, + const BIGNUM *dmp, const BIGNUM *dmq, const BIGNUM *iqmp); + #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/cmserr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/cmserr.h index 1de2f9c7..a7fcf11f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/cmserr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/cmserr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/context.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/context.h index 8ad16834..7369a730 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/context.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/context.h @@ -24,6 +24,9 @@ void *ossl_rand_crng_ctx_new(OSSL_LIB_CTX *); int ossl_thread_register_fips(OSSL_LIB_CTX *); void *ossl_thread_event_ctx_new(OSSL_LIB_CTX *); void *ossl_fips_prov_ossl_ctx_new(OSSL_LIB_CTX *); +#if defined(OPENSSL_THREADS) +void *ossl_threads_ctx_new(OSSL_LIB_CTX *); +#endif void ossl_provider_store_free(void *); void ossl_property_string_data_free(void *); @@ -40,3 +43,6 @@ void ossl_rand_crng_ctx_free(void *); void ossl_thread_event_ctx_free(void *); void ossl_fips_prov_ossl_ctx_free(void *); void ossl_release_default_drbg_ctx(void); +#if defined(OPENSSL_THREADS) +void ossl_threads_ctx_free(void *); +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/decoder.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/decoder.h index 6b5ee56a..a0d5de65 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/decoder.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/decoder.h @@ -1,5 +1,5 @@ /* - * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,16 +25,16 @@ void *ossl_decoder_from_algorithm(int id, const OSSL_ALGORITHM *algodef, OSSL_DECODER_INSTANCE * ossl_decoder_instance_new(OSSL_DECODER *decoder, void *decoderctx); void ossl_decoder_instance_free(OSSL_DECODER_INSTANCE *decoder_inst); +OSSL_DECODER_INSTANCE *ossl_decoder_instance_dup(const OSSL_DECODER_INSTANCE *src); int ossl_decoder_ctx_add_decoder_inst(OSSL_DECODER_CTX *ctx, OSSL_DECODER_INSTANCE *di); -int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx, - EVP_PKEY **pkey, const char *keytype, - OSSL_LIB_CTX *libctx, - const char *propquery); - int ossl_decoder_get_number(const OSSL_DECODER *encoder); int ossl_decoder_store_cache_flush(OSSL_LIB_CTX *libctx); int ossl_decoder_store_remove_all_provided(const OSSL_PROVIDER *prov); +void *ossl_decoder_cache_new(OSSL_LIB_CTX *ctx); +void ossl_decoder_cache_free(void *vcache); +int ossl_decoder_cache_flush(OSSL_LIB_CTX *libctx); + #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dherr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dherr.h index bb24d131..519327f7 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dherr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dherr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dsa.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dsa.h index 260c30fa..85d92a18 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dsa.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/dsa.h @@ -26,7 +26,9 @@ int ossl_dsa_generate_ffc_parameters(DSA *dsa, int type, int pbits, int qbits, BN_GENCB *cb); int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen, - unsigned char *sig, unsigned int *siglen, DSA *dsa); + unsigned char *sig, unsigned int *siglen, DSA *dsa, + unsigned int nonce_type, const char *digestname, + OSSL_LIB_CTX *libctx, const char *propq); FFC_PARAMS *ossl_dsa_get0_params(DSA *dsa); int ossl_dsa_ffc_params_fromdata(DSA *dsa, const OSSL_PARAM params[]); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ec.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ec.h index 62163b31..da85a7bd 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ec.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ec.h @@ -95,6 +95,12 @@ char *ossl_ec_pt_format_id2name(int id); char *ossl_ec_check_group_type_id2name(int flags); int ossl_ec_set_check_group_type_from_name(EC_KEY *ec, const char *name); - +int ossl_ec_generate_key_dhkem(EC_KEY *eckey, + const unsigned char *ikm, size_t ikmlen); +int ossl_ecdsa_deterministic_sign(const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, + EC_KEY *eckey, unsigned int nonce_type, + const char *digestname, + OSSL_LIB_CTX *libctx, const char *propq); # endif /* OPENSSL_NO_EC */ #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ecx.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ecx.h index 48b95fa5..f35b875f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ecx.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/ecx.h @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -15,7 +15,7 @@ # include -# ifndef OPENSSL_NO_EC +# ifndef OPENSSL_NO_ECX # include # include @@ -72,7 +72,6 @@ struct ecx_key_st { size_t keylen; ECX_KEY_TYPE type; CRYPTO_REF_COUNT references; - CRYPTO_RWLOCK *lock; }; size_t ossl_ecx_key_length(ECX_KEY_TYPE type); @@ -83,6 +82,9 @@ unsigned char *ossl_ecx_key_allocate_privkey(ECX_KEY *key); void ossl_ecx_key_free(ECX_KEY *key); int ossl_ecx_key_up_ref(ECX_KEY *key); ECX_KEY *ossl_ecx_key_dup(const ECX_KEY *key, int selection); +int ossl_ecx_compute_key(ECX_KEY *peer, ECX_KEY *priv, size_t keylen, + unsigned char *secret, size_t *secretlen, + size_t outlen); int ossl_x25519(uint8_t out_shared_key[32], const uint8_t private_key[32], const uint8_t peer_public_value[32]); @@ -94,27 +96,33 @@ ossl_ed25519_public_from_private(OSSL_LIB_CTX *ctx, uint8_t out_public_key[32], const uint8_t private_key[32], const char *propq); int -ossl_ed25519_sign(uint8_t *out_sig, const uint8_t *message, size_t message_len, +ossl_ed25519_sign(uint8_t *out_sig, const uint8_t *tbs, size_t tbs_len, const uint8_t public_key[32], const uint8_t private_key[32], + const uint8_t dom2flag, const uint8_t phflag, const uint8_t csflag, + const uint8_t *context, size_t context_len, OSSL_LIB_CTX *libctx, const char *propq); int -ossl_ed25519_verify(const uint8_t *message, size_t message_len, +ossl_ed25519_verify(const uint8_t *tbs, size_t tbs_len, const uint8_t signature[64], const uint8_t public_key[32], + const uint8_t dom2flag, const uint8_t phflag, const uint8_t csflag, + const uint8_t *context, size_t context_len, OSSL_LIB_CTX *libctx, const char *propq); - int ossl_ed448_public_from_private(OSSL_LIB_CTX *ctx, uint8_t out_public_key[57], const uint8_t private_key[57], const char *propq); int -ossl_ed448_sign(OSSL_LIB_CTX *ctx, uint8_t *out_sig, const uint8_t *message, - size_t message_len, const uint8_t public_key[57], - const uint8_t private_key[57], const uint8_t *context, - size_t context_len, const char *propq); +ossl_ed448_sign(OSSL_LIB_CTX *ctx, uint8_t *out_sig, + const uint8_t *message, size_t message_len, + const uint8_t public_key[57], const uint8_t private_key[57], + const uint8_t *context, size_t context_len, + const uint8_t phflag, const char *propq); int -ossl_ed448_verify(OSSL_LIB_CTX *ctx, const uint8_t *message, size_t message_len, +ossl_ed448_verify(OSSL_LIB_CTX *ctx, + const uint8_t *message, size_t message_len, const uint8_t signature[114], const uint8_t public_key[57], - const uint8_t *context, size_t context_len, const char *propq); + const uint8_t *context, size_t context_len, + const uint8_t phflag, const char *propq); int ossl_x448(uint8_t out_shared_key[56], const uint8_t private_key[56], @@ -146,5 +154,5 @@ ECX_KEY *ossl_evp_pkey_get1_X25519(EVP_PKEY *pkey); ECX_KEY *ossl_evp_pkey_get1_X448(EVP_PKEY *pkey); ECX_KEY *ossl_evp_pkey_get1_ED25519(EVP_PKEY *pkey); ECX_KEY *ossl_evp_pkey_get1_ED448(EVP_PKEY *pkey); -# endif /* OPENSSL_NO_EC */ +# endif /* OPENSSL_NO_ECX */ #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/encoder.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/encoder.h index 5c53bbea..6240438d 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/encoder.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/encoder.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evp.h index a0fff7fd..34cea2f9 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evp.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evp.h @@ -16,11 +16,21 @@ # include "internal/refcount.h" # include "crypto/ecx.h" +/* + * Default PKCS5 PBE KDF salt lengths + * In RFC 8018, PBE1 uses 8 bytes (64 bits) for its salt length. + * It also specifies to use at least 8 bytes for PBES2. + * The NIST requirement for PBKDF2 is 128 bits so we use this as the + * default for PBE2 (scrypt and HKDF2) + */ +# define PKCS5_DEFAULT_PBE1_SALT_LEN PKCS5_SALT_LEN +# define PKCS5_DEFAULT_PBE2_SALT_LEN 16 /* * Don't free up md_ctx->pctx in EVP_MD_CTX_reset, use the reserved flag * values in evp.h */ #define EVP_MD_CTX_FLAG_KEEP_PKEY_CTX 0x0400 +#define EVP_MD_CTX_FLAG_FINALISED 0x0800 #define evp_pkey_ctx_is_legacy(ctx) \ ((ctx)->keymgmt == NULL) @@ -203,7 +213,6 @@ struct evp_mac_st { const char *description; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_mac_newctx_fn *newctx; OSSL_FUNC_mac_dupctx_fn *dupctx; @@ -225,7 +234,6 @@ struct evp_kdf_st { char *type_name; const char *description; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_kdf_newctx_fn *newctx; OSSL_FUNC_kdf_dupctx_fn *dupctx; @@ -270,7 +278,6 @@ struct evp_md_st { const char *description; OSSL_PROVIDER *prov; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_digest_newctx_fn *newctx; OSSL_FUNC_digest_init_fn *dinit; OSSL_FUNC_digest_update_fn *dupdate; @@ -326,7 +333,6 @@ struct evp_cipher_st { const char *description; OSSL_PROVIDER *prov; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_cipher_newctx_fn *newctx; OSSL_FUNC_cipher_encrypt_init_fn *einit; OSSL_FUNC_cipher_decrypt_init_fn *dinit; @@ -646,7 +652,9 @@ union legacy_pkey_st { # endif # ifndef OPENSSL_NO_EC struct ec_key_st *ec; /* ECC */ +# ifndef OPENSSL_NO_ECX ECX_KEY *ecx; /* X25519, X448, Ed25519, Ed448 */ +# endif # endif }; @@ -784,7 +792,7 @@ void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt, OP_CACHE_ELEM *evp_keymgmt_util_find_operation_cache(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt, int selection); -int evp_keymgmt_util_clear_operation_cache(EVP_PKEY *pk, int locking); +int evp_keymgmt_util_clear_operation_cache(EVP_PKEY *pk); int evp_keymgmt_util_cache_keydata(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt, void *keydata, int selection); void evp_keymgmt_util_cache_keyinfo(EVP_PKEY *pk); @@ -813,7 +821,7 @@ int evp_keymgmt_set_params(const EVP_KEYMGMT *keymgmt, void *evp_keymgmt_gen_init(const EVP_KEYMGMT *keymgmt, int selection, const OSSL_PARAM params[]); int evp_keymgmt_gen_set_template(const EVP_KEYMGMT *keymgmt, void *genctx, - void *template); + void *templ); int evp_keymgmt_gen_set_params(const EVP_KEYMGMT *keymgmt, void *genctx, const OSSL_PARAM params[]); void *evp_keymgmt_gen(const EVP_KEYMGMT *keymgmt, void *genctx, @@ -892,10 +900,6 @@ EVP_MD_CTX *evp_md_ctx_new_ex(EVP_PKEY *pkey, const ASN1_OCTET_STRING *id, int evp_pkey_name2type(const char *name); const char *evp_pkey_type2name(int type); -int evp_pkey_ctx_set1_id_prov(EVP_PKEY_CTX *ctx, const void *id, int len); -int evp_pkey_ctx_get1_id_prov(EVP_PKEY_CTX *ctx, void *id); -int evp_pkey_ctx_get1_id_len_prov(EVP_PKEY_CTX *ctx, size_t *id_len); - int evp_pkey_ctx_use_cached_data(EVP_PKEY_CTX *ctx); # endif /* !defined(FIPS_MODULE) */ @@ -959,4 +963,8 @@ void evp_rand_clear_seed(EVP_RAND_CTX *ctx, unsigned char *buffer, size_t b_len); int evp_signature_get_number(const EVP_SIGNATURE *signature); +int evp_pkey_decrypt_alloc(EVP_PKEY_CTX *ctx, unsigned char **outp, + size_t *outlenp, size_t expected_outlen, + const unsigned char *in, size_t inlen); + #endif /* OSSL_CRYPTO_EVP_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evperr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evperr.h index d90ba83f..4a001107 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evperr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/evperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/md32_common.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/md32_common.h index 966e2684..46214f32 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/md32_common.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/md32_common.h @@ -63,37 +63,41 @@ * #define HASH_BLOCK_DATA_ORDER md5_block_data_order */ -#include +#ifndef OSSL_CRYPTO_MD32_COMMON_H +# define OSSL_CRYPTO_MD32_COMMON_H +# pragma once -#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) -# error "DATA_ORDER must be defined!" -#endif +# include -#ifndef HASH_CBLOCK -# error "HASH_CBLOCK must be defined!" -#endif -#ifndef HASH_LONG -# error "HASH_LONG must be defined!" -#endif -#ifndef HASH_CTX -# error "HASH_CTX must be defined!" -#endif +# if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# error "DATA_ORDER must be defined!" +# endif -#ifndef HASH_UPDATE -# error "HASH_UPDATE must be defined!" -#endif -#ifndef HASH_TRANSFORM -# error "HASH_TRANSFORM must be defined!" -#endif -#ifndef HASH_FINAL -# error "HASH_FINAL must be defined!" -#endif +# ifndef HASH_CBLOCK +# error "HASH_CBLOCK must be defined!" +# endif +# ifndef HASH_LONG +# error "HASH_LONG must be defined!" +# endif +# ifndef HASH_CTX +# error "HASH_CTX must be defined!" +# endif -#ifndef HASH_BLOCK_DATA_ORDER -# error "HASH_BLOCK_DATA_ORDER must be defined!" -#endif +# ifndef HASH_UPDATE +# error "HASH_UPDATE must be defined!" +# endif +# ifndef HASH_TRANSFORM +# error "HASH_TRANSFORM must be defined!" +# endif +# ifndef HASH_FINAL +# error "HASH_FINAL must be defined!" +# endif -#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n)))) +# ifndef HASH_BLOCK_DATA_ORDER +# error "HASH_BLOCK_DATA_ORDER must be defined!" +# endif + +# define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n)))) #ifndef PEDANTIC # if defined(__GNUC__) && __GNUC__>=2 && \ @@ -117,31 +121,31 @@ # endif #endif -#if defined(DATA_ORDER_IS_BIG_ENDIAN) +# if defined(DATA_ORDER_IS_BIG_ENDIAN) -# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ +# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ l|=(((unsigned long)(*((c)++)))<<16), \ l|=(((unsigned long)(*((c)++)))<< 8), \ l|=(((unsigned long)(*((c)++))) ) ) -# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ +# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ *((c)++)=(unsigned char)(((l) )&0xff), \ l) -#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) -# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \ +# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \ l|=(((unsigned long)(*((c)++)))<< 8), \ l|=(((unsigned long)(*((c)++)))<<16), \ l|=(((unsigned long)(*((c)++)))<<24) ) -# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ +# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ *((c)++)=(unsigned char)(((l)>>24)&0xff), \ l) -#endif +# endif /* * Time for some action :-) @@ -226,30 +230,30 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c) memset(p + n, 0, HASH_CBLOCK - 8 - n); p += HASH_CBLOCK - 8; -#if defined(DATA_ORDER_IS_BIG_ENDIAN) +# if defined(DATA_ORDER_IS_BIG_ENDIAN) (void)HOST_l2c(c->Nh, p); (void)HOST_l2c(c->Nl, p); -#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) (void)HOST_l2c(c->Nl, p); (void)HOST_l2c(c->Nh, p); -#endif +# endif p -= HASH_CBLOCK; HASH_BLOCK_DATA_ORDER(c, p, 1); c->num = 0; OPENSSL_cleanse(p, HASH_CBLOCK); -#ifndef HASH_MAKE_STRING -# error "HASH_MAKE_STRING must be defined!" -#else +# ifndef HASH_MAKE_STRING +# error "HASH_MAKE_STRING must be defined!" +# else HASH_MAKE_STRING(c, md); -#endif +# endif return 1; } -#ifndef MD32_REG_T -# if defined(__alpha) || defined(__sparcv9) || defined(__mips) -# define MD32_REG_T long +# ifndef MD32_REG_T +# if defined(__alpha) || defined(__sparcv9) || defined(__mips) +# define MD32_REG_T long /* * This comment was originally written for MD5, which is why it * discusses A-D. But it basically applies to all 32-bit digests, @@ -266,13 +270,15 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c) * Well, to be honest it should say that this *prevents* * performance degradation. */ -# else +# else /* * Above is not absolute and there are LP64 compilers that * generate better code if MD32_REG_T is defined int. The above * pre-processor condition reflects the circumstances under which * the conclusion was made and is subject to further extension. */ -# define MD32_REG_T int +# define MD32_REG_T int +# endif # endif + #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/modes.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/modes.h index 573e1197..d03ca83d 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/modes.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/modes.h @@ -138,6 +138,12 @@ struct gcm128_context { #endif }; +/* GHASH functions */ +void ossl_gcm_init_4bit(u128 Htable[16], const u64 H[2]); +void ossl_gcm_ghash_4bit(u64 Xi[2], const u128 Htable[16], + const u8 *inp, size_t len); +void ossl_gcm_gmult_4bit(u64 Xi[2], const u128 Htable[16]); + /* * The maximum permitted number of cipher blocks per data unit in XTS mode. * Reference IEEE Std 1619-2018. @@ -149,6 +155,12 @@ struct xts128_context { block128_f block1, block2; }; +/* XTS mode for SM4 algorithm specified by GB/T 17964-2021 */ +int ossl_crypto_xts128gb_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + struct ccm128_context { union { u64 u[2]; diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/pkcs12err.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/pkcs12err.h index 662f412e..114971c6 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/pkcs12err.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/pkcs12err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/punycode.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/punycode.h index 4c6e49f5..2e1c85c1 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/punycode.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/punycode.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -22,6 +22,4 @@ int ossl_punycode_decode ( int ossl_a2ulabel(const char *in, char *out, size_t outlen); -int ossl_a2ucompare(const char *a, const char *u); - #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rand.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rand.h index 215b3b7a..d375c2f9 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rand.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rand.h @@ -140,4 +140,15 @@ EVP_RAND_CTX *ossl_rand_get0_private_noncreating(OSSL_LIB_CTX *ctx); # else EVP_RAND_CTX *ossl_rand_get0_seed_noncreating(OSSL_LIB_CTX *ctx); # endif + +/* Generate a uniformly distributed random integer in the interval [0, upper) */ +uint32_t ossl_rand_uniform_uint32(OSSL_LIB_CTX *ctx, uint32_t upper, int *err); + +/* + * Generate a uniformly distributed random integer in the interval + * [lower, upper). + */ +uint32_t ossl_rand_range_uint32(OSSL_LIB_CTX *ctx, uint32_t lower, uint32_t upper, + int *err); + #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/riscv_arch.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/riscv_arch.h index 89a40bea..95185841 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/riscv_arch.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/riscv_arch.h @@ -1,5 +1,5 @@ /* - * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -56,4 +56,9 @@ static const size_t kRISCVNumCaps = # include "riscv_arch.def" ; +/* Extension combination tests. */ +#define RISCV_HAS_ZBB_AND_ZBC() (RISCV_HAS_ZBB() && RISCV_HAS_ZBC()) +#define RISCV_HAS_ZBKB_AND_ZKND_AND_ZKNE() (RISCV_HAS_ZBKB() && RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) +#define RISCV_HAS_ZKND_AND_ZKNE() (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) + #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rsa.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rsa.h index 949873d0..8eddc168 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rsa.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/rsa.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -34,8 +34,6 @@ int ossl_rsa_pss_params_30_copy(RSA_PSS_PARAMS_30 *to, int ossl_rsa_pss_params_30_is_unrestricted(const RSA_PSS_PARAMS_30 *rsa_pss_params); int ossl_rsa_pss_params_30_set_hashalg(RSA_PSS_PARAMS_30 *rsa_pss_params, int hashalg_nid); -int ossl_rsa_pss_params_30_set_maskgenalg(RSA_PSS_PARAMS_30 *rsa_pss_params, - int maskgenalg_nid); int ossl_rsa_pss_params_30_set_maskgenhashalg(RSA_PSS_PARAMS_30 *rsa_pss_params, int maskgenhashalg_nid); int ossl_rsa_pss_params_30_set_saltlen(RSA_PSS_PARAMS_30 *rsa_pss_params, @@ -83,6 +81,10 @@ int ossl_rsa_param_decode(RSA *rsa, const X509_ALGOR *alg); RSA *ossl_rsa_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf, OSSL_LIB_CTX *libctx, const char *propq); +int ossl_rsa_padding_check_PKCS1_type_2(OSSL_LIB_CTX *ctx, + unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, unsigned char *kdk); int ossl_rsa_padding_check_PKCS1_type_2_TLS(OSSL_LIB_CTX *ctx, unsigned char *to, size_t tlen, const unsigned char *from, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sha.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sha.h index 64305d17..99bcf0ff 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sha.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sha.h @@ -1,5 +1,5 @@ /* - * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -14,6 +14,7 @@ # include +int ossl_sha256_192_init(SHA256_CTX *c); int sha512_224_init(SHA512_CTX *); int sha512_256_init(SHA512_CTX *); int ossl_sha1_ctrl(SHA_CTX *ctx, int cmd, int mslen, void *ms); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sm4_platform.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sm4_platform.h index 6cc1dfa5..cc4f5142 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sm4_platform.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/sm4_platform.h @@ -12,7 +12,7 @@ # pragma once # if defined(OPENSSL_CPUID_OBJ) -# if defined(__aarch64__) +# if defined(__aarch64__) || defined (_M_ARM64) # include "arm_arch.h" extern unsigned int OPENSSL_arm_midr; static inline int vpsm4_capable(void) @@ -21,8 +21,14 @@ static inline int vpsm4_capable(void) (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V1) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_N1)); } +static inline int vpsm4_ex_capable(void) +{ + return (OPENSSL_armcap_P & ARMV8_CPUID) && + (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, HISI_CPU_IMP, HISI_CPU_PART_KP920)); +} # if defined(VPSM4_ASM) # define VPSM4_CAPABLE vpsm4_capable() +# define VPSM4_EX_CAPABLE vpsm4_ex_capable() # endif # define HWSM4_CAPABLE (OPENSSL_armcap_P & ARMV8_SM4) # define HWSM4_set_encrypt_key sm4_v8_set_encrypt_key @@ -53,7 +59,7 @@ void HWSM4_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, const unsigned char ivec[16]); # endif /* HWSM4_CAPABLE */ -#ifdef VPSM4_CAPABLE +# ifdef VPSM4_CAPABLE int vpsm4_set_encrypt_key(const unsigned char *userKey, SM4_KEY *key); int vpsm4_set_decrypt_key(const unsigned char *userKey, SM4_KEY *key); void vpsm4_encrypt(const unsigned char *in, unsigned char *out, @@ -69,7 +75,37 @@ void vpsm4_ecb_encrypt(const unsigned char *in, unsigned char *out, void vpsm4_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, size_t len, const void *key, const unsigned char ivec[16]); +void vpsm4_xts_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, const SM4_KEY *key2, + const unsigned char ivec[16], const int enc); +void vpsm4_xts_encrypt_gb(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, const SM4_KEY *key2, + const unsigned char ivec[16], const int enc); # endif /* VPSM4_CAPABLE */ +# ifdef VPSM4_EX_CAPABLE +int vpsm4_ex_set_encrypt_key(const unsigned char *userKey, SM4_KEY *key); +int vpsm4_ex_set_decrypt_key(const unsigned char *userKey, SM4_KEY *key); +void vpsm4_ex_encrypt(const unsigned char *in, unsigned char *out, + const SM4_KEY *key); +void vpsm4_ex_decrypt(const unsigned char *in, unsigned char *out, + const SM4_KEY *key); +void vpsm4_ex_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const SM4_KEY *key, + unsigned char *ivec, const int enc); +void vpsm4_ex_ecb_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const SM4_KEY *key, + const int enc); +void vpsm4_ex_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + const unsigned char ivec[16]); +void vpsm4_ex_xts_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, const SM4_KEY *key2, + const unsigned char ivec[16], const int enc); +void vpsm4_ex_xts_encrypt_gb(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, + const SM4_KEY *key2, const unsigned char ivec[16], + const int enc); +# endif /* VPSM4_EX_CAPABLE */ #endif /* OSSL_SM4_PLATFORM_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/store.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/store.h index 5645fc92..9b7be71a 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/store.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/store.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509.h index 631150b7..5765b9f7 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509.h @@ -278,6 +278,8 @@ struct x509_store_ctx_st { /* X509_STORE_CTX */ SSL_DANE *dane; /* signed via bare TA public key, rather than CA certificate */ int bare_ta_signed; + /* Raw Public Key */ + EVP_PKEY *rpk; OSSL_LIB_CTX *libctx; char *propq; @@ -309,7 +311,7 @@ struct x509_object_st { }; int ossl_a2i_ipadd(unsigned char *ipout, const char *ipasc); -int ossl_x509_set1_time(ASN1_TIME **ptm, const ASN1_TIME *tm); +int ossl_x509_set1_time(int *modified, ASN1_TIME **ptm, const ASN1_TIME *tm); int ossl_x509_print_ex_brief(BIO *bio, X509 *cert, unsigned long neg_cflags); int ossl_x509v3_cache_extensions(X509 *x); int ossl_x509_init_sig_info(X509 *x); @@ -334,7 +336,8 @@ int ossl_x509_PUBKEY_get0_libctx(OSSL_LIB_CTX **plibctx, const char **ppropq, ASN1_OCTET_STRING *ossl_x509_pubkey_hash(X509_PUBKEY *pubkey); X509_PUBKEY *ossl_d2i_X509_PUBKEY_INTERNAL(const unsigned char **pp, - long len, OSSL_LIB_CTX *libctx); + long len, OSSL_LIB_CTX *libctx, + const char *propq); void ossl_X509_PUBKEY_INTERNAL_free(X509_PUBKEY *xpub); RSA *ossl_d2i_RSA_PSS_PUBKEY(RSA **a, const unsigned char **pp, long length); @@ -364,6 +367,7 @@ int ossl_i2d_X448_PUBKEY(const ECX_KEY *a, unsigned char **pp); # endif /* OPENSSL_NO_EC */ EVP_PKEY *ossl_d2i_PUBKEY_legacy(EVP_PKEY **a, const unsigned char **pp, long length); +int ossl_x509_check_private_key(const EVP_PKEY *k, const EVP_PKEY *pkey); int x509v3_add_len_value_uchar(const char *name, const unsigned char *value, size_t vallen, STACK_OF(CONF_VALUE) **extlist); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509err.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509err.h index 0a67975b..c7c7d25e 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509err.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/crypto/x509err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/asn1.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/asn1.h index 3143e340..36dbe0fc 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/asn1.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/asn1.h @@ -11,6 +11,8 @@ # define OSSL_INTERNAL_ASN1_H # pragma once +# include + int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb); #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio.h index 547a73d0..9481f4c9 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio.h @@ -27,6 +27,8 @@ struct bio_method_st { int (*create) (BIO *); int (*destroy) (BIO *); long (*callback_ctrl) (BIO *, int, BIO_info_cb *); + int (*bsendmmsg) (BIO *, BIO_MSG *, size_t, size_t, uint64_t, size_t *); + int (*brecvmmsg) (BIO *, BIO_MSG *, size_t, size_t, uint64_t, size_t *); }; void bio_free_ex_data(BIO *bio); @@ -41,16 +43,20 @@ int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); # define BIO_CTRL_SET_KTLS 72 # define BIO_CTRL_SET_KTLS_TX_SEND_CTRL_MSG 74 # define BIO_CTRL_CLEAR_KTLS_TX_CTRL_MSG 75 +# define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 /* * This is used with socket BIOs: * BIO_FLAGS_KTLS_TX means we are using ktls with this BIO for sending. * BIO_FLAGS_KTLS_TX_CTRL_MSG means we are about to send a ctrl message next. * BIO_FLAGS_KTLS_RX means we are using ktls with this BIO for receiving. + * BIO_FLAGS_KTLS_TX_ZEROCOPY_SENDFILE means we are using the zerocopy mode with + * this BIO for sending using sendfile. */ # define BIO_FLAGS_KTLS_TX_CTRL_MSG 0x1000 # define BIO_FLAGS_KTLS_RX 0x2000 # define BIO_FLAGS_KTLS_TX 0x4000 +# define BIO_FLAGS_KTLS_TX_ZEROCOPY_SENDFILE 0x8000 /* KTLS related controls and flags */ # define BIO_set_ktls_flag(b, is_tx) \ @@ -63,6 +69,8 @@ int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); BIO_test_flags(b, BIO_FLAGS_KTLS_TX_CTRL_MSG) # define BIO_clear_ktls_ctrl_msg_flag(b) \ BIO_clear_flags(b, BIO_FLAGS_KTLS_TX_CTRL_MSG) +# define BIO_set_ktls_zerocopy_sendfile_flag(b) \ + BIO_set_flags(b, BIO_FLAGS_KTLS_TX_ZEROCOPY_SENDFILE) # define BIO_set_ktls(b, keyblob, is_tx) \ BIO_ctrl(b, BIO_CTRL_SET_KTLS, is_tx, keyblob) @@ -70,6 +78,8 @@ int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); BIO_ctrl(b, BIO_CTRL_SET_KTLS_TX_SEND_CTRL_MSG, record_type, NULL) # define BIO_clear_ktls_ctrl_msg(b) \ BIO_ctrl(b, BIO_CTRL_CLEAR_KTLS_TX_CTRL_MSG, 0, NULL) +# define BIO_set_ktls_tx_zerocopy_sendfile(b) \ + BIO_ctrl(b, BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE, 0, NULL) /* Functions to allow the core to offer the CORE_BIO type to providers */ OSSL_CORE_BIO *ossl_core_bio_new_from_bio(BIO *bio); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_addr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_addr.h new file mode 100644 index 00000000..a6449b7e --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_addr.h @@ -0,0 +1,29 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_BIO_ADDR_H +# define OSSL_BIO_ADDR_H + +# include "internal/e_os.h" +# include "internal/sockets.h" + +# ifndef OPENSSL_NO_SOCK +union bio_addr_st { + struct sockaddr sa; +# if OPENSSL_USE_IPV6 + struct sockaddr_in6 s_in6; +# endif + struct sockaddr_in s_in; +# ifndef OPENSSL_NO_UNIX_SOCK + struct sockaddr_un s_un; +# endif +}; +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_tfo.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_tfo.h new file mode 100644 index 00000000..64c0d4c3 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/bio_tfo.h @@ -0,0 +1,151 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Contains definitions for simplifying the use of TCP Fast Open + * (RFC7413) in OpenSSL socket BIOs. + */ + +/* If a supported OS is added here, update test/bio_tfo_test.c */ +#if defined(TCP_FASTOPEN) && !defined(OPENSSL_NO_TFO) + +# if defined(OPENSSL_SYS_MACOSX) || defined(__FreeBSD__) +# include +# endif + +/* + * OSSL_TFO_SYSCTL is used to determine if TFO is supported by + * this kernel, and if supported, if it is enabled. This is more of + * a problem on FreeBSD 10.3 ~ 11.4, where TCP_FASTOPEN was defined, + * but not enabled by default in the kernel, and only for the server. + * Linux does not have sysctlbyname(), and the closest equivalent + * is to go into the /proc filesystem, but I'm not sure it's + * worthwhile. + * + * On MacOS and Linux: + * These operating systems use a single parameter to control TFO. + * The OSSL_TFO_CLIENT_FLAG and OSSL_TFO_SERVER_FLAGS are used to + * determine if TFO is enabled for the client and server respectively. + * + * OSSL_TFO_CLIENT_FLAG = 1 = client TFO enabled + * OSSL_TFO_SERVER_FLAG = 2 = server TFO enabled + * + * Such that: + * 0 = TFO disabled + * 3 = server and client TFO enabled + * + * macOS 10.14 and later support TFO. + * Linux kernel 3.6 added support for client TFO. + * Linux kernel 3.7 added support for server TFO. + * Linux kernel 3.13 enabled TFO by default. + * Linux kernel 4.11 added the TCP_FASTOPEN_CONNECT option. + * + * On FreeBSD: + * FreeBSD 10.3 ~ 11.4 uses a single sysctl for server enable. + * FreeBSD 12.0 and later uses separate sysctls for server and + * client enable. + * + * Some options are purposely NOT defined per-platform + * + * OSSL_TFO_SYSCTL + * Defined as a sysctlbyname() option to determine if + * TFO is enabled in the kernel (macOS, FreeBSD) + * + * OSSL_TFO_SERVER_SOCKOPT + * Defined to indicate the socket option used to enable + * TFO on a server socket (all) + * + * OSSL_TFO_SERVER_SOCKOPT_VALUE + * Value to be used with OSSL_TFO_SERVER_SOCKOPT + * + * OSSL_TFO_CONNECTX + * Use the connectx() function to make a client connection + * (macOS) + * + * OSSL_TFO_CLIENT_SOCKOPT + * Defined to indicate the socket option used to enable + * TFO on a client socket (FreeBSD, Linux 4.14 and later) + * + * OSSL_TFO_SENDTO + * Defined to indicate the sendto() message type to + * be used to initiate a TFO connection (FreeBSD, + * Linux pre-4.14) + * + * OSSL_TFO_DO_NOT_CONNECT + * Defined to skip calling connect() when creating a + * client socket (macOS, FreeBSD, Linux pre-4.14) + */ + +# if defined(OPENSSL_SYS_WINDOWS) +/* + * NO WINDOWS SUPPORT + * + * But this is what would be used on the server: + * + * define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN + * define OSSL_TFO_SERVER_SOCKOPT_VALUE 1 + * + * Still have to figure out client support + */ +# undef TCP_FASTOPEN +# endif + +/* NO VMS SUPPORT */ +# if defined(OPENSSL_SYS_VMS) +# undef TCP_FASTOPEN +# endif + +# if defined(OPENSSL_SYS_MACOSX) +# define OSSL_TFO_SYSCTL "net.inet.tcp.fastopen" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE 1 +# define OSSL_TFO_CONNECTX 1 +# define OSSL_TFO_DO_NOT_CONNECT 1 +# define OSSL_TFO_CLIENT_FLAG 1 +# define OSSL_TFO_SERVER_FLAG 2 +# endif + +# if defined(__FreeBSD__) +# if defined(TCP_FASTOPEN_PSK_LEN) +/* As of 12.0 these are the SYSCTLs */ +# define OSSL_TFO_SYSCTL_SERVER "net.inet.tcp.fastopen.server_enable" +# define OSSL_TFO_SYSCTL_CLIENT "net.inet.tcp.fastopen.client_enable" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE MAX_LISTEN +# define OSSL_TFO_CLIENT_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_DO_NOT_CONNECT 1 +# define OSSL_TFO_SENDTO 0 +/* These are the same because the sysctl are client/server-specific */ +# define OSSL_TFO_CLIENT_FLAG 1 +# define OSSL_TFO_SERVER_FLAG 1 +# else +/* 10.3 through 11.4 SYSCTL - ONLY SERVER SUPPORT */ +# define OSSL_TFO_SYSCTL "net.inet.tcp.fastopen.enabled" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE MAX_LISTEN +# define OSSL_TFO_SERVER_FLAG 1 +# endif +# endif + +# if defined(OPENSSL_SYS_LINUX) +/* OSSL_TFO_PROC not used, but of interest */ +# define OSSL_TFO_PROC "/proc/sys/net/ipv4/tcp_fastopen" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE MAX_LISTEN +# if defined(TCP_FASTOPEN_CONNECT) +# define OSSL_TFO_CLIENT_SOCKOPT TCP_FASTOPEN_CONNECT +# else +# define OSSL_TFO_SENDTO MSG_FASTOPEN +# define OSSL_TFO_DO_NOT_CONNECT 1 +# endif +# define OSSL_TFO_CLIENT_FLAG 1 +# define OSSL_TFO_SERVER_FLAG 2 +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/common.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/common.h new file mode 100644 index 00000000..15666f11 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/common.h @@ -0,0 +1,217 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_COMMON_H +# define OSSL_INTERNAL_COMMON_H +# pragma once + +# include +# include +# include "openssl/configuration.h" + +# include "internal/e_os.h" /* ossl_inline in many files */ +# include "internal/nelem.h" + +# if defined(__GNUC__) || defined(__clang__) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) x +# define unlikely(x) x +# endif + +# if defined(__GNUC__) || defined(__clang__) +# define ALIGN32 __attribute((aligned(32))) +# define ALIGN64 __attribute((aligned(64))) +# elif defined(_MSC_VER) +# define ALIGN32 __declspec(align(32)) +# define ALIGN64 __declspec(align(64)) +# else +# define ALIGN32 +# define ALIGN64 +# endif + +# ifdef NDEBUG +# define ossl_assert(x) ((x) != 0) +# else +__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, + const char *file, int line) +{ + if (!expr) + OPENSSL_die(exprstr, file, line); + + return expr; +} + +# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ + __FILE__, __LINE__) + +# endif + +/* Check if |pre|, which must be a string literal, is a prefix of |str| */ +#define HAS_PREFIX(str, pre) (strncmp(str, pre "", sizeof(pre) - 1) == 0) +/* As before, and if check succeeds, advance |str| past the prefix |pre| */ +#define CHECK_AND_SKIP_PREFIX(str, pre) \ + (HAS_PREFIX(str, pre) ? ((str) += sizeof(pre) - 1, 1) : 0) +/* Check if the string literal |p| is a case-insensitive prefix of |s| */ +#define HAS_CASE_PREFIX(s, p) (OPENSSL_strncasecmp(s, p "", sizeof(p) - 1) == 0) +/* As before, and if check succeeds, advance |str| past the prefix |pre| */ +#define CHECK_AND_SKIP_CASE_PREFIX(str, pre) \ + (HAS_CASE_PREFIX(str, pre) ? ((str) += sizeof(pre) - 1, 1) : 0) +/* Check if the string literal |suffix| is a case-insensitive suffix of |str| */ +#define HAS_CASE_SUFFIX(str, suffix) (strlen(str) < sizeof(suffix) - 1 ? 0 : \ + OPENSSL_strcasecmp(str + strlen(str) - sizeof(suffix) + 1, suffix "") == 0) + +/* + * Use this inside a union with the field that needs to be aligned to a + * reasonable boundary for the platform. The most pessimistic alignment + * of the listed types will be used by the compiler. + */ +# define OSSL_UNION_ALIGN \ + double align; \ + ossl_uintmax_t align_int; \ + void *align_ptr + +# define OPENSSL_CONF "openssl.cnf" + +# ifndef OPENSSL_SYS_VMS +# define X509_CERT_AREA OPENSSLDIR +# define X509_CERT_DIR OPENSSLDIR "/certs" +# define X509_CERT_FILE OPENSSLDIR "/cert.pem" +# define X509_PRIVATE_DIR OPENSSLDIR "/private" +# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" +# else +# define X509_CERT_AREA "OSSL$DATAROOT:[000000]" +# define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" +# define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" +# define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" +# define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" +# endif + +# define X509_CERT_DIR_EVP "SSL_CERT_DIR" +# define X509_CERT_FILE_EVP "SSL_CERT_FILE" +# define CTLOG_FILE_EVP "CTLOG_FILE" + +/* size of string representations */ +# define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) +# define HEX_SIZE(type) (sizeof(type)*2) + +# define c2l(c,l) (l = ((unsigned long)(*((c)++))) , \ + l|=(((unsigned long)(*((c)++)))<< 8), \ + l|=(((unsigned long)(*((c)++)))<<16), \ + l|=(((unsigned long)(*((c)++)))<<24)) + +/* NOTE - c is not incremented as per c2l */ +# define c2ln(c,l1,l2,n) { \ + c+=n; \ + l1=l2=0; \ + switch (n) { \ + case 8: l2 =((unsigned long)(*(--(c))))<<24; \ + case 7: l2|=((unsigned long)(*(--(c))))<<16; \ + case 6: l2|=((unsigned long)(*(--(c))))<< 8; \ + case 5: l2|=((unsigned long)(*(--(c)))); \ + case 4: l1 =((unsigned long)(*(--(c))))<<24; \ + case 3: l1|=((unsigned long)(*(--(c))))<<16; \ + case 2: l1|=((unsigned long)(*(--(c))))<< 8; \ + case 1: l1|=((unsigned long)(*(--(c)))); \ + } \ + } + +# define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>>24)&0xff)) + +# define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \ + l|=((unsigned long)(*((c)++)))<<16, \ + l|=((unsigned long)(*((c)++)))<< 8, \ + l|=((unsigned long)(*((c)++)))) + +# define n2l8(c,l) (l =((uint64_t)(*((c)++)))<<56, \ + l|=((uint64_t)(*((c)++)))<<48, \ + l|=((uint64_t)(*((c)++)))<<40, \ + l|=((uint64_t)(*((c)++)))<<32, \ + l|=((uint64_t)(*((c)++)))<<24, \ + l|=((uint64_t)(*((c)++)))<<16, \ + l|=((uint64_t)(*((c)++)))<< 8, \ + l|=((uint64_t)(*((c)++)))) + +# define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l) )&0xff)) + +# define l2n8(l,c) (*((c)++)=(unsigned char)(((l)>>56)&0xff), \ + *((c)++)=(unsigned char)(((l)>>48)&0xff), \ + *((c)++)=(unsigned char)(((l)>>40)&0xff), \ + *((c)++)=(unsigned char)(((l)>>32)&0xff), \ + *((c)++)=(unsigned char)(((l)>>24)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l) )&0xff)) + +/* NOTE - c is not incremented as per l2c */ +# define l2cn(l1,l2,c,n) { \ + c+=n; \ + switch (n) { \ + case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \ + case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \ + case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \ + case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \ + case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \ + case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \ + case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \ + case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \ + } \ + } + +# define n2s(c,s) ((s=(((unsigned int)((c)[0]))<< 8)| \ + (((unsigned int)((c)[1])) )),(c)+=2) +# define s2n(s,c) (((c)[0]=(unsigned char)(((s)>> 8)&0xff), \ + (c)[1]=(unsigned char)(((s) )&0xff)),(c)+=2) + +# define n2l3(c,l) ((l =(((unsigned long)((c)[0]))<<16)| \ + (((unsigned long)((c)[1]))<< 8)| \ + (((unsigned long)((c)[2])) )),(c)+=3) + +# define l2n3(l,c) (((c)[0]=(unsigned char)(((l)>>16)&0xff), \ + (c)[1]=(unsigned char)(((l)>> 8)&0xff), \ + (c)[2]=(unsigned char)(((l) )&0xff)),(c)+=3) + +static ossl_inline int ossl_ends_with_dirsep(const char *path) +{ + if (*path != '\0') + path += strlen(path) - 1; +# if defined __VMS + if (*path == ']' || *path == '>' || *path == ':') + return 1; +# elif defined _WIN32 + if (*path == '\\') + return 1; +# endif + return *path == '/'; +} + +static ossl_inline int ossl_is_absolute_path(const char *path) +{ +# if defined __VMS + if (strchr(path, ':') != NULL + || ((path[0] == '[' || path[0] == '<') + && path[1] != '.' && path[1] != '-' + && path[1] != ']' && path[1] != '>')) + return 1; +# elif defined _WIN32 + if (path[0] == '\\' + || (path[0] != '\0' && path[1] == ':')) + return 1; +# endif + return path[0] == '/'; +} + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/comp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/comp.h index 3ad86fc7..c48c29d5 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/comp.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/comp.h @@ -10,3 +10,5 @@ #include void ossl_comp_zlib_cleanup(void); +void ossl_comp_brotli_cleanup(void); +void ossl_comp_zstd_cleanup(void); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/cryptlib.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/cryptlib.h index ac50eb3b..64851fd8 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/cryptlib.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/cryptlib.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,9 +11,6 @@ # define OSSL_INTERNAL_CRYPTLIB_H # pragma once -# include -# include - # ifdef OPENSSL_USE_APPLINK # define BIO_FLAGS_UPLINK_INTERNAL 0x8000 # include "ms/uplink.h" @@ -21,39 +18,13 @@ # define BIO_FLAGS_UPLINK_INTERNAL 0 # endif +# include "internal/common.h" + # include # include # include # include # include -# include "internal/nelem.h" - -#ifdef NDEBUG -# define ossl_assert(x) ((x) != 0) -#else -__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, - const char *file, int line) -{ - if (!expr) - OPENSSL_die(exprstr, file, line); - - return expr; -} - -# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ - __FILE__, __LINE__) - -#endif - -/* - * Use this inside a union with the field that needs to be aligned to a - * reasonable boundary for the platform. The most pessimistic alignment - * of the listed types will be used by the compiler. - */ -# define OSSL_UNION_ALIGN \ - double align; \ - ossl_uintmax_t align_int; \ - void *align_ptr typedef struct ex_callback_st EX_CALLBACK; DEFINE_STACK_OF(EX_CALLBACK) @@ -61,30 +32,6 @@ DEFINE_STACK_OF(EX_CALLBACK) typedef struct mem_st MEM; DEFINE_LHASH_OF_EX(MEM); -# define OPENSSL_CONF "openssl.cnf" - -# ifndef OPENSSL_SYS_VMS -# define X509_CERT_AREA OPENSSLDIR -# define X509_CERT_DIR OPENSSLDIR "/certs" -# define X509_CERT_FILE OPENSSLDIR "/cert.pem" -# define X509_PRIVATE_DIR OPENSSLDIR "/private" -# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" -# else -# define X509_CERT_AREA "OSSL$DATAROOT:[000000]" -# define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" -# define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" -# define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" -# define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" -# endif - -# define X509_CERT_DIR_EVP "SSL_CERT_DIR" -# define X509_CERT_FILE_EVP "SSL_CERT_FILE" -# define CTLOG_FILE_EVP "CTLOG_FILE" - -/* size of string representations */ -# define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) -# define HEX_SIZE(type) (sizeof(type)*2) - void OPENSSL_cpuid_setup(void); #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || \ @@ -168,7 +115,9 @@ typedef struct ossl_ex_data_global_st { # define OSSL_LIB_CTX_PROVIDER_CONF_INDEX 16 # define OSSL_LIB_CTX_BIO_CORE_INDEX 17 # define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18 -# define OSSL_LIB_CTX_MAX_INDEXES 19 +# define OSSL_LIB_CTX_THREAD_INDEX 19 +# define OSSL_LIB_CTX_DECODER_CACHE_INDEX 20 +# define OSSL_LIB_CTX_MAX_INDEXES 20 OSSL_LIB_CTX *ossl_lib_ctx_get_concrete(OSSL_LIB_CTX *ctx); int ossl_lib_ctx_is_default(OSSL_LIB_CTX *ctx); @@ -211,34 +160,4 @@ char *ossl_buf2hexstr_sep(const unsigned char *buf, long buflen, char sep); unsigned char *ossl_hexstr2buf_sep(const char *str, long *buflen, const char sep); -static ossl_inline int ossl_ends_with_dirsep(const char *path) -{ - if (*path != '\0') - path += strlen(path) - 1; -# if defined __VMS - if (*path == ']' || *path == '>' || *path == ':') - return 1; -# elif defined _WIN32 - if (*path == '\\') - return 1; -# endif - return *path == '/'; -} - -static ossl_inline int ossl_is_absolute_path(const char *path) -{ -# if defined __VMS - if (strchr(path, ':') != NULL - || ((path[0] == '[' || path[0] == '<') - && path[1] != '.' && path[1] != '-' - && path[1] != ']' && path[1] != '>')) - return 1; -# elif defined _WIN32 - if (path[0] == '\\' - || (path[0] != '\0' && path[1] == ':')) - return 1; -# endif - return path[0] == '/'; -} - #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/der.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/der.h index f23fabc2..8d6db8f0 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/der.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/der.h @@ -7,8 +7,12 @@ * https://www.openssl.org/source/license.html */ -#include -#include "internal/packet.h" +#ifndef OSSL_INTERNAL_DER_H +# define OSSL_INTERNAL_DER_H +# pragma once + +# include +# include "internal/packet.h" /* * NOTE: X.690 numbers the identifier octet bits 1 to 8. @@ -22,42 +26,42 @@ * These are only valid for the UNIVERSAL class. With the other classes, * these bits have a different meaning. */ -#define DER_P_EOC 0 /* BER End Of Contents tag */ -#define DER_P_BOOLEAN 1 -#define DER_P_INTEGER 2 -#define DER_P_BIT_STRING 3 -#define DER_P_OCTET_STRING 4 -#define DER_P_NULL 5 -#define DER_P_OBJECT 6 -#define DER_P_OBJECT_DESCRIPTOR 7 -#define DER_P_EXTERNAL 8 -#define DER_P_REAL 9 -#define DER_P_ENUMERATED 10 -#define DER_P_UTF8STRING 12 -#define DER_P_SEQUENCE 16 -#define DER_P_SET 17 -#define DER_P_NUMERICSTRING 18 -#define DER_P_PRINTABLESTRING 19 -#define DER_P_T61STRING 20 -#define DER_P_VIDEOTEXSTRING 21 -#define DER_P_IA5STRING 22 -#define DER_P_UTCTIME 23 -#define DER_P_GENERALIZEDTIME 24 -#define DER_P_GRAPHICSTRING 25 -#define DER_P_ISO64STRING 26 -#define DER_P_GENERALSTRING 27 -#define DER_P_UNIVERSALSTRING 28 -#define DER_P_BMPSTRING 30 +# define DER_P_EOC 0 /* BER End Of Contents tag */ +# define DER_P_BOOLEAN 1 +# define DER_P_INTEGER 2 +# define DER_P_BIT_STRING 3 +# define DER_P_OCTET_STRING 4 +# define DER_P_NULL 5 +# define DER_P_OBJECT 6 +# define DER_P_OBJECT_DESCRIPTOR 7 +# define DER_P_EXTERNAL 8 +# define DER_P_REAL 9 +# define DER_P_ENUMERATED 10 +# define DER_P_UTF8STRING 12 +# define DER_P_SEQUENCE 16 +# define DER_P_SET 17 +# define DER_P_NUMERICSTRING 18 +# define DER_P_PRINTABLESTRING 19 +# define DER_P_T61STRING 20 +# define DER_P_VIDEOTEXSTRING 21 +# define DER_P_IA5STRING 22 +# define DER_P_UTCTIME 23 +# define DER_P_GENERALIZEDTIME 24 +# define DER_P_GRAPHICSTRING 25 +# define DER_P_ISO64STRING 26 +# define DER_P_GENERALSTRING 27 +# define DER_P_UNIVERSALSTRING 28 +# define DER_P_BMPSTRING 30 /* DER Flags, occupying bit 6 in the DER identifier byte */ -#define DER_F_PRIMITIVE 0x00 -#define DER_F_CONSTRUCTED 0x20 +# define DER_F_PRIMITIVE 0x00 +# define DER_F_CONSTRUCTED 0x20 /* DER classes tags, occupying bits 7-8 in the DER identifier byte */ -#define DER_C_UNIVERSAL 0x00 -#define DER_C_APPLICATION 0x40 -#define DER_C_CONTEXT 0x80 -#define DER_C_PRIVATE 0xC0 +# define DER_C_UNIVERSAL 0x00 +# define DER_C_APPLICATION 0x40 +# define DER_C_CONTEXT 0x80 +# define DER_C_PRIVATE 0xC0 /* * Run-time constructors. @@ -67,7 +71,7 @@ */ /* This can be used for all items that don't have a context */ -#define DER_NO_CONTEXT -1 +# define DER_NO_CONTEXT -1 int ossl_DER_w_precompiled(WPACKET *pkt, int tag, const unsigned char *precompiled, @@ -86,3 +90,5 @@ int ossl_DER_w_octet_string_uint32(WPACKET *pkt, int tag, uint32_t value); */ int ossl_DER_w_begin_sequence(WPACKET *pkt, int tag); int ossl_DER_w_end_sequence(WPACKET *pkt, int tag); + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/deterministic_nonce.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/deterministic_nonce.h new file mode 100644 index 00000000..5f0313fe --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/deterministic_nonce.h @@ -0,0 +1,24 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_DETERMINISTIC_NONCE_H +# define OSSL_INTERNAL_DETERMINISTIC_NONCE_H +# pragma once + +# include + +int ossl_gen_deterministic_nonce_rfc6979(BIGNUM *out, const BIGNUM *q, + const BIGNUM *priv, + const unsigned char *message, + size_t message_len, + const char *digestname, + OSSL_LIB_CTX *libctx, + const char *propq); + +#endif /*OSSL_INTERNAL_DETERMINISTIC_NONCE_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/e_os.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/e_os.h index 7fdc3899..d1ed62e8 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/e_os.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/e_os.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -143,7 +143,7 @@ static __inline unsigned int _strlen31(const char *str) # undef stdin # undef stdout # undef stderr -FILE *__iob_func(); +FILE *__iob_func(void); # define stdin (&__iob_func()[0]) # define stdout (&__iob_func()[1]) # define stderr (&__iob_func()[2]) @@ -249,7 +249,7 @@ FILE *__iob_func(); /***********************************************/ # if defined(OPENSSL_SYS_WINDOWS) -# if (_MSC_VER >= 1310) && !defined(_WIN32_WCE) +# if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(_WIN32_WCE) # define open _open # define fdopen _fdopen # define close _close @@ -286,54 +286,6 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ -/* system-specific variants defining ossl_sleep() */ -#if defined(OPENSSL_SYS_UNIX) || defined(__DJGPP__) -# include -static ossl_inline void ossl_sleep(unsigned long millis) -{ -# ifdef OPENSSL_SYS_VXWORKS - struct timespec ts; - ts.tv_sec = (long int) (millis / 1000); - ts.tv_nsec = (long int) (millis % 1000) * 1000000ul; - nanosleep(&ts, NULL); -# elif defined(__TANDEM) -# if !defined(_REENTRANT) -# include - /* HPNS does not support usleep for non threaded apps */ - PROCESS_DELAY_(millis * 1000); -# elif defined(_SPT_MODEL_) -# include -# include - usleep(millis * 1000); -# else - usleep(millis * 1000); -# endif -# else - usleep(millis * 1000); -# endif -} -#elif defined(_WIN32) -# include -static ossl_inline void ossl_sleep(unsigned long millis) -{ - Sleep(millis); -} -#else -/* Fallback to a busy wait */ -static ossl_inline void ossl_sleep(unsigned long millis) -{ - struct timeval start, now; - unsigned long elapsedms; - - gettimeofday(&start, NULL); - do { - gettimeofday(&now, NULL); - elapsedms = (((now.tv_sec - start.tv_sec) * 1000000) - + now.tv_usec - start.tv_usec) / 1000; - } while (elapsedms < millis); -} -#endif /* defined OPENSSL_SYS_UNIX */ - /* ----------------------------- HP NonStop -------------------------------- */ /* Required to support platform variant without getpid() and pid_t. */ # if defined(__TANDEM) && defined(_GUARDIAN_TARGET) @@ -343,12 +295,12 @@ static ossl_inline void ossl_sleep(unsigned long millis) # define gethostbyname(name) gethostbyname((char*)name) # define ioctlsocket(a,b,c) ioctl(a,b,c) # ifdef NO_GETPID -inline int nssgetpid(); +inline int nssgetpid(void); # ifndef NSSGETPID_MACRO # define NSSGETPID_MACRO # include # include - inline int nssgetpid() + inline int nssgetpid(void) { short phandle[10]={0}; union pseudo_pid { diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/endian.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/endian.h index 8b34e03e..7d5a73b1 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/endian.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/endian.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,7 +12,7 @@ # pragma once /* - * IS_LITTLE_ENDIAN and IS_BIG_ENDIAN can be used to detect the endiannes + * IS_LITTLE_ENDIAN and IS_BIG_ENDIAN can be used to detect the endianness * at compile time. To use it, DECLARE_IS_ENDIAN must be used to declare * a variable. * diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/event_queue.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/event_queue.h new file mode 100644 index 00000000..bda1ee6a --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/event_queue.h @@ -0,0 +1,163 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_EVENT_QUEUE_H +# define OSSL_INTERNAL_EVENT_QUEUE_H +# pragma once + +# include "internal/priority_queue.h" +# include "internal/time.h" + +/* + * Opaque type holding an event. + */ +typedef struct ossl_event_st OSSL_EVENT; + +DEFINE_PRIORITY_QUEUE_OF(OSSL_EVENT); + +/* + * Public type representing an event queue, the underlying structure being + * opaque. + */ +typedef struct ossl_event_queue_st OSSL_EVENT_QUEUE; + +/* + * Public type representing a event queue entry. + * It is (internally) public so that it can be embedded into other structures, + * it should otherwise be treated as opaque. + */ +struct ossl_event_st { + uint32_t type; /* What type of event this is */ + uint32_t priority; /* What priority this event has */ + OSSL_TIME when; /* When the event is scheduled to happen */ + void *ctx; /* User argument passed to call backs */ + void *payload; /* Event specific data of unknown kind */ + size_t payload_size; /* Length (in bytes) of event specific data */ + + /* These fields are for internal use only */ + PRIORITY_QUEUE_OF(OSSL_EVENT) *queue; /* Queue containing this event */ + size_t ref; /* ID for this event */ + unsigned int flag_dynamic : 1; /* Malloced or not? */ +}; + +/* + * Utility function to populate an event structure and add it to the queue + */ +int ossl_event_queue_add(OSSL_EVENT_QUEUE *queue, OSSL_EVENT *event, + uint32_t type, uint32_t priority, + OSSL_TIME when, void *ctx, + void *payload, size_t payload_size); + +/* + * Utility functions to extract event fields + */ +static ossl_unused ossl_inline +uint32_t ossl_event_get_type(const OSSL_EVENT *event) +{ + return event->type; +} + +static ossl_unused ossl_inline +uint32_t ossl_event_get_priority(const OSSL_EVENT *event) +{ + return event->priority; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_event_get_when(const OSSL_EVENT *event) +{ + return event->when; +} + +static ossl_unused ossl_inline +void *ossl_event_get0_ctx(const OSSL_EVENT *event) +{ + return event->ctx; +} + +static ossl_unused ossl_inline +void *ossl_event_get0_payload(const OSSL_EVENT *event, size_t *length) +{ + if (length != NULL) + *length = event->payload_size; + return event->payload; +} + +/* + * Create and free a queue. + */ +OSSL_EVENT_QUEUE *ossl_event_queue_new(void); +void ossl_event_queue_free(OSSL_EVENT_QUEUE *queue); + +/* + * Schedule a new event into an event queue. + * + * The event parameters are taken from the function arguments. + * + * The function returns NULL on failure and the added event on success. + */ +OSSL_EVENT *ossl_event_queue_add_new(OSSL_EVENT_QUEUE *queue, + uint32_t type, uint32_t priority, + OSSL_TIME when, void *ctx, + void *payload, size_t payload_size) +; + +/* + * Schedule an event into an event queue. + * + * The event parameters are taken from the function arguments. + * + * The function returns 0 on failure and 1 on success. + */ +int ossl_event_queue_add(OSSL_EVENT_QUEUE *queue, OSSL_EVENT *event, + uint32_t type, uint32_t priority, + OSSL_TIME when, void *ctx, + void *payload, size_t payload_size); + +/* + * Delete an event from the queue. + * This will cause the early deletion function to be called if it is non-NULL. + * A pointer to the event structure is returned. + */ +int ossl_event_queue_remove(OSSL_EVENT_QUEUE *queue, OSSL_EVENT *event); + +/* + * Free a dynamic event. + * Is a NOP for a static event. + */ +void ossl_event_free(OSSL_EVENT *event); + +/* + * Return the time until the next event for the specified event, if the event's + * time is past, zero is returned. Once activated, the event reference becomes + * invalid and this function becomes undefined. + */ +OSSL_TIME ossl_event_time_until(const OSSL_EVENT *event); + +/* + * Return the time until the next event in the queue. + * If the next event is in the past, zero is returned. + */ +OSSL_TIME ossl_event_queue_time_until_next(const OSSL_EVENT_QUEUE *queue); + +/* + * Postpone an event to trigger at the specified time. + * If the event has triggered, this function's behaviour is undefined. + */ +int ossl_event_queue_postpone_until(OSSL_EVENT_QUEUE *queue, + OSSL_EVENT *event, + OSSL_TIME when); + +/* + * Return the next event to process. + */ +int ossl_event_queue_get1_next_event(OSSL_EVENT_QUEUE *queue, + OSSL_EVENT **event); + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ffc.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ffc.h index c4f09087..edd8381e 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ffc.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ffc.h @@ -58,8 +58,11 @@ # define FFC_CHECK_INVALID_Q_VALUE 0x00020 # define FFC_CHECK_INVALID_J_VALUE 0x00040 -# define FFC_CHECK_BAD_LN_PAIR 0x00080 -# define FFC_CHECK_INVALID_SEED_SIZE 0x00100 +/* + * 0x80, 0x100 reserved by include/openssl/dh.h with check bits that are not + * relevant for FFC. + */ + # define FFC_CHECK_MISSING_SEED_OR_COUNTER 0x00200 # define FFC_CHECK_INVALID_G 0x00400 # define FFC_CHECK_INVALID_PQ 0x00800 @@ -68,6 +71,8 @@ # define FFC_CHECK_Q_MISMATCH 0x04000 # define FFC_CHECK_G_MISMATCH 0x08000 # define FFC_CHECK_COUNTER_MISMATCH 0x10000 +# define FFC_CHECK_BAD_LN_PAIR 0x20000 +# define FFC_CHECK_INVALID_SEED_SIZE 0x40000 /* Validation Return codes */ # define FFC_ERROR_PUBKEY_TOO_SMALL 0x01 @@ -132,7 +137,7 @@ void ossl_ffc_params_set_h(FFC_PARAMS *params, int index); void ossl_ffc_params_set_flags(FFC_PARAMS *params, unsigned int flags); void ossl_ffc_params_enable_flags(FFC_PARAMS *params, unsigned int flags, int enable); -int ossl_ffc_set_digest(FFC_PARAMS *params, const char *alg, const char *props); +void ossl_ffc_set_digest(FFC_PARAMS *params, const char *alg, const char *props); int ossl_ffc_params_set_validate_params(FFC_PARAMS *params, const unsigned char *seed, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/hpke_util.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/hpke_util.h new file mode 100644 index 00000000..e1da5e05 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/hpke_util.h @@ -0,0 +1,100 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_HPKE_UTIL_H +# define OSSL_INTERNAL_HPKE_UTIL_H +# pragma once + +/* Constants from RFC 9180 Section 7.1 and 7.3 */ +# define OSSL_HPKE_MAX_SECRET 64 +# define OSSL_HPKE_MAX_PUBLIC 133 +# define OSSL_HPKE_MAX_PRIVATE 66 +# define OSSL_HPKE_MAX_KDF_INPUTLEN 64 + +/* + * max length of a base-nonce (the Nn field from OSSL_HPKE_AEAD_INFO), this + * is used for a local stack array size + */ +# define OSSL_HPKE_MAX_NONCELEN 12 + +/* + * @brief info about a KEM + * Used to store constants from Section 7.1 "Table 2 KEM IDs" + * and the bitmask for EC curves described in Section 7.1.3 DeriveKeyPair + */ +typedef struct { + uint16_t kem_id; /* code point for key encipherment method */ + const char *keytype; /* string form of algtype "EC"/"X25519"/"X448" */ + const char *groupname; /* string form of EC group for NIST curves */ + const char *mdname; /* hash alg name for the HKDF */ + size_t Nsecret; /* size of secrets */ + size_t Nenc; /* length of encapsulated key */ + size_t Npk; /* length of public key */ + size_t Nsk; /* length of raw private key */ + uint8_t bitmask; +} OSSL_HPKE_KEM_INFO; + +/* + * @brief info about a KDF + */ +typedef struct { + uint16_t kdf_id; /* code point for KDF */ + const char *mdname; /* hash alg name for the HKDF */ + size_t Nh; /* length of hash/extract output */ +} OSSL_HPKE_KDF_INFO; + +/* + * @brief info about an AEAD + */ +typedef struct { + uint16_t aead_id; /* code point for aead alg */ + const char *name; /* alg name */ + size_t taglen; /* aead tag len */ + size_t Nk; /* size of a key for this aead */ + size_t Nn; /* length of a nonce for this aead */ +} OSSL_HPKE_AEAD_INFO; + +const OSSL_HPKE_KEM_INFO *ossl_HPKE_KEM_INFO_find_curve(const char *curve); +const OSSL_HPKE_KEM_INFO *ossl_HPKE_KEM_INFO_find_id(uint16_t kemid); +const OSSL_HPKE_KEM_INFO *ossl_HPKE_KEM_INFO_find_random(OSSL_LIB_CTX *ctx); +const OSSL_HPKE_KDF_INFO *ossl_HPKE_KDF_INFO_find_id(uint16_t kdfid); +const OSSL_HPKE_KDF_INFO *ossl_HPKE_KDF_INFO_find_random(OSSL_LIB_CTX *ctx); +const OSSL_HPKE_AEAD_INFO *ossl_HPKE_AEAD_INFO_find_id(uint16_t aeadid); +const OSSL_HPKE_AEAD_INFO *ossl_HPKE_AEAD_INFO_find_random(OSSL_LIB_CTX *ctx); + +int ossl_hpke_kdf_extract(EVP_KDF_CTX *kctx, + unsigned char *prk, size_t prklen, + const unsigned char *salt, size_t saltlen, + const unsigned char *ikm, size_t ikmlen); + +int ossl_hpke_kdf_expand(EVP_KDF_CTX *kctx, + unsigned char *okm, size_t okmlen, + const unsigned char *prk, size_t prklen, + const unsigned char *info, size_t infolen); + +int ossl_hpke_labeled_extract(EVP_KDF_CTX *kctx, + unsigned char *prk, size_t prklen, + const unsigned char *salt, size_t saltlen, + const char *protocol_label, + const unsigned char *suiteid, size_t suiteidlen, + const char *label, + const unsigned char *ikm, size_t ikmlen); +int ossl_hpke_labeled_expand(EVP_KDF_CTX *kctx, + unsigned char *okm, size_t okmlen, + const unsigned char *prk, size_t prklen, + const char *protocol_label, + const unsigned char *suiteid, size_t suiteidlen, + const char *label, + const unsigned char *info, size_t infolen); + +EVP_KDF_CTX *ossl_kdf_ctx_create(const char *kdfname, const char *mdname, + OSSL_LIB_CTX *libctx, const char *propq); + +int ossl_hpke_str2suite(const char *suitestr, OSSL_HPKE_SUITE *suite); +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ktls.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ktls.h index 95492fd0..af27a325 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ktls.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ktls.h @@ -1,5 +1,5 @@ /* - * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -40,6 +40,11 @@ # define OPENSSL_KTLS_AES_GCM_128 # define OPENSSL_KTLS_AES_GCM_256 # define OPENSSL_KTLS_TLS13 +# ifdef TLS_CHACHA20_IV_LEN +# ifndef OPENSSL_NO_CHACHA +# define OPENSSL_KTLS_CHACHA20_POLY1305 +# endif +# endif typedef struct tls_enable ktls_crypto_info_t; @@ -209,6 +214,13 @@ static ossl_inline ossl_ssize_t ktls_sendfile(int s, int fd, off_t off, # warning "Skipping Compilation of KTLS receive data path" # endif # endif +# if LINUX_VERSION_CODE < KERNEL_VERSION(5, 19, 0) +# define OPENSSL_NO_KTLS_ZC_TX +# ifndef PEDANTIC +# warning "KTLS requires Kernel Headers >= 5.19.0 for zerocopy sendfile" +# warning "Skipping Compilation of KTLS zerocopy sendfile" +# endif +# endif # define OPENSSL_KTLS_AES_GCM_128 # if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) # define OPENSSL_KTLS_AES_GCM_256 @@ -288,6 +300,18 @@ static ossl_inline int ktls_start(int fd, ktls_crypto_info_t *crypto_info, crypto_info, crypto_info->tls_crypto_info_len) ? 0 : 1; } +static ossl_inline int ktls_enable_tx_zerocopy_sendfile(int fd) +{ +#ifndef OPENSSL_NO_KTLS_ZC_TX + int enable = 1; + + return setsockopt(fd, SOL_TLS, TLS_TX_ZEROCOPY_RO, + &enable, sizeof(enable)) ? 0 : 1; +#else + return 0; +#endif +} + /* * Send a TLS record using the crypto_info provided in ktls_start and use * record_type instead of the default SSL3_RT_APPLICATION_DATA. diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/list.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/list.h new file mode 100644 index 00000000..fdd356c4 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/list.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_LIST_H +# define OSSL_INTERNAL_LIST_H +# pragma once + +# include +# include + +# ifdef NDEBUG +# define OSSL_LIST_DBG(x) +# else +# define OSSL_LIST_DBG(x) x; +# endif + +/* Define a list structure */ +# define OSSL_LIST(name) OSSL_LIST_ ## name + +/* Define fields to include an element of a list */ +# define OSSL_LIST_MEMBER(name, type) \ + struct { \ + type *next, *prev; \ + OSSL_LIST_DBG(struct ossl_list_st_ ## name *list) \ + } ossl_list_ ## name + +# define DEFINE_LIST_OF(name, type) \ + typedef struct ossl_list_st_ ## name OSSL_LIST(name); \ + struct ossl_list_st_ ## name { \ + type *alpha, *omega; \ + size_t num_elems; \ + }; \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_init(OSSL_LIST(name) *list) \ + { \ + memset(list, 0, sizeof(*list)); \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_init_elem(type *elem) \ + { \ + memset(&elem->ossl_list_ ## name, 0, \ + sizeof(elem->ossl_list_ ## name)); \ + } \ + static ossl_unused ossl_inline int \ + ossl_list_##name##_is_empty(const OSSL_LIST(name) *list) \ + { \ + return list->num_elems == 0; \ + } \ + static ossl_unused ossl_inline size_t \ + ossl_list_##name##_num(const OSSL_LIST(name) *list) \ + { \ + return list->num_elems; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_head(const OSSL_LIST(name) *list) \ + { \ + assert(list->alpha == NULL \ + || list->alpha->ossl_list_ ## name.list == list); \ + return list->alpha; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_tail(const OSSL_LIST(name) *list) \ + { \ + assert(list->omega == NULL \ + || list->omega->ossl_list_ ## name.list == list); \ + return list->omega; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_next(const type *elem) \ + { \ + assert(elem->ossl_list_ ## name.next == NULL \ + || elem->ossl_list_ ## name.next \ + ->ossl_list_ ## name.prev == elem); \ + return elem->ossl_list_ ## name.next; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_prev(const type *elem) \ + { \ + assert(elem->ossl_list_ ## name.prev == NULL \ + || elem->ossl_list_ ## name.prev \ + ->ossl_list_ ## name.next == elem); \ + return elem->ossl_list_ ## name.prev; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_remove(OSSL_LIST(name) *list, type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == list); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = NULL) \ + if (list->alpha == elem) \ + list->alpha = elem->ossl_list_ ## name.next; \ + if (list->omega == elem) \ + list->omega = elem->ossl_list_ ## name.prev; \ + if (elem->ossl_list_ ## name.prev != NULL) \ + elem->ossl_list_ ## name.prev->ossl_list_ ## name.next = \ + elem->ossl_list_ ## name.next; \ + if (elem->ossl_list_ ## name.next != NULL) \ + elem->ossl_list_ ## name.next->ossl_list_ ## name.prev = \ + elem->ossl_list_ ## name.prev; \ + list->num_elems--; \ + memset(&elem->ossl_list_ ## name, 0, \ + sizeof(elem->ossl_list_ ## name)); \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_head(OSSL_LIST(name) *list, type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + if (list->alpha != NULL) \ + list->alpha->ossl_list_ ## name.prev = elem; \ + elem->ossl_list_ ## name.next = list->alpha; \ + elem->ossl_list_ ## name.prev = NULL; \ + list->alpha = elem; \ + if (list->omega == NULL) \ + list->omega = elem; \ + list->num_elems++; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_tail(OSSL_LIST(name) *list, type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + if (list->omega != NULL) \ + list->omega->ossl_list_ ## name.next = elem; \ + elem->ossl_list_ ## name.prev = list->omega; \ + elem->ossl_list_ ## name.next = NULL; \ + list->omega = elem; \ + if (list->alpha == NULL) \ + list->alpha = elem; \ + list->num_elems++; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_before(OSSL_LIST(name) *list, type *e, \ + type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + elem->ossl_list_ ## name.next = e; \ + elem->ossl_list_ ## name.prev = e->ossl_list_ ## name.prev; \ + if (e->ossl_list_ ## name.prev != NULL) \ + e->ossl_list_ ## name.prev->ossl_list_ ## name.next = elem; \ + e->ossl_list_ ## name.prev = elem; \ + if (list->alpha == e) \ + list->alpha = elem; \ + list->num_elems++; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_after(OSSL_LIST(name) *list, type *e, \ + type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + elem->ossl_list_ ## name.prev = e; \ + elem->ossl_list_ ## name.next = e->ossl_list_ ## name.next; \ + if (e->ossl_list_ ## name.next != NULL) \ + e->ossl_list_ ## name.next->ossl_list_ ## name.prev = elem; \ + e->ossl_list_ ## name.next = elem; \ + if (list->omega == e) \ + list->omega = elem; \ + list->num_elems++; \ + } \ + struct ossl_list_st_ ## name + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/namemap.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/namemap.h index fd36883f..6c42a9cd 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/namemap.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/namemap.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/numbers.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/numbers.h index 4f4d3306..47fb1677 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/numbers.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/numbers.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -61,6 +61,31 @@ # define UINT64_MAX __MAXUINT__(uint64_t) # endif +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# ifndef UINT32_C +# define UINT32_C(c) (c) +# endif +# ifndef UINT64_C +# define UINT64_C(c) (c##UL) +# endif +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# ifndef UINT32_C +# define UINT32_C(c) (c##UL) +# endif +# ifndef UINT64_C +# define UINT64_C(c) (c##ULL) +# endif +# endif + + # ifndef INT128_MAX # if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ == 16 typedef __int128_t int128_t; diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet.h index ed761720..7abc6b8b 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -691,6 +691,8 @@ struct wpacket_st { */ #define WPACKET_FLAGS_ABANDON_ON_ZERO_LENGTH 2 +/* QUIC variable-length integer length prefix */ +#define WPACKET_FLAGS_QUIC_VLINT 4 /* * Initialise a WPACKET with the buffer in |buf|. The buffer must exist diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet_quic.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet_quic.h new file mode 100644 index 00000000..5173b467 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/packet_quic.h @@ -0,0 +1,150 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_PACKET_QUIC_H +# define OSSL_INTERNAL_PACKET_QUIC_H +# pragma once + +# include "internal/packet.h" +# include "internal/quic_vlint.h" + +# ifndef OPENSSL_NO_QUIC +/* + * Decodes a QUIC variable-length integer in |pkt| and stores the result in + * |data|. + */ +__owur static ossl_inline int PACKET_get_quic_vlint(PACKET *pkt, + uint64_t *data) +{ + size_t enclen; + + if (PACKET_remaining(pkt) < 1) + return 0; + + enclen = ossl_quic_vlint_decode_len(*pkt->curr); + + if (PACKET_remaining(pkt) < enclen) + return 0; + + *data = ossl_quic_vlint_decode_unchecked(pkt->curr); + packet_forward(pkt, enclen); + return 1; +} + +/* + * Decodes a QUIC variable-length integer in |pkt| and stores the result in + * |data|. Unlike PACKET_get_quic_vlint, this does not advance the current + * position. If was_minimal is non-NULL, *was_minimal is set to 1 if the integer + * was encoded using the minimal possible number of bytes and 0 otherwise. + */ +__owur static ossl_inline int PACKET_peek_quic_vlint_ex(PACKET *pkt, + uint64_t *data, + int *was_minimal) +{ + size_t enclen; + + if (PACKET_remaining(pkt) < 1) + return 0; + + enclen = ossl_quic_vlint_decode_len(*pkt->curr); + + if (PACKET_remaining(pkt) < enclen) + return 0; + + *data = ossl_quic_vlint_decode_unchecked(pkt->curr); + + if (was_minimal != NULL) + *was_minimal = (enclen == ossl_quic_vlint_encode_len(*data)); + + return 1; +} + +__owur static ossl_inline int PACKET_peek_quic_vlint(PACKET *pkt, + uint64_t *data) +{ + return PACKET_peek_quic_vlint_ex(pkt, data, NULL); +} + +/* + * Skips over a QUIC variable-length integer in |pkt| without decoding it. + */ +__owur static ossl_inline int PACKET_skip_quic_vlint(PACKET *pkt) +{ + size_t enclen; + + if (PACKET_remaining(pkt) < 1) + return 0; + + enclen = ossl_quic_vlint_decode_len(*pkt->curr); + + if (PACKET_remaining(pkt) < enclen) + return 0; + + packet_forward(pkt, enclen); + return 1; +} + +/* + * Reads a variable-length vector prefixed with a QUIC variable-length integer + * denoting the length, and stores the contents in |subpkt|. |pkt| can equal + * |subpkt|. Data is not copied: the |subpkt| packet will share its underlying + * buffer with the original |pkt|, so data wrapped by |pkt| must outlive the + * |subpkt|. Upon failure, the original |pkt| and |subpkt| are not modified. + */ +__owur static ossl_inline int PACKET_get_quic_length_prefixed(PACKET *pkt, + PACKET *subpkt) +{ + uint64_t length; + const unsigned char *data; + PACKET tmp = *pkt; + + if (!PACKET_get_quic_vlint(&tmp, &length) || + length > SIZE_MAX || + !PACKET_get_bytes(&tmp, &data, (size_t)length)) { + return 0; + } + + *pkt = tmp; + subpkt->curr = data; + subpkt->remaining = (size_t)length; + + return 1; +} + +/* + * Starts a QUIC sub-packet headed by a QUIC variable-length integer. A 4-byte + * representation is used. + */ +__owur int WPACKET_start_quic_sub_packet(WPACKET *pkt); + +/* + * Starts a QUIC sub-packet headed by a QUIC variable-length integer. max_len + * specifies the upper bound for the sub-packet size at the time the sub-packet + * is closed, which determines the encoding size for the variable-length + * integer header. max_len can be a precise figure or a worst-case bound + * if a precise figure is not available. + */ +__owur int WPACKET_start_quic_sub_packet_bound(WPACKET *pkt, size_t max_len); + +/* + * Allocates a QUIC sub-packet with exactly len bytes of payload, headed by a + * QUIC variable-length integer. The pointer to the payload buffer is output and + * must be filled by the caller. This function assures optimal selection of + * variable-length integer encoding length. + */ +__owur int WPACKET_quic_sub_allocate_bytes(WPACKET *pkt, size_t len, + unsigned char **bytes); + +/* + * Write a QUIC variable-length integer to the packet. + */ +__owur int WPACKET_quic_write_vlint(WPACKET *pkt, uint64_t v); + +# endif /* OPENSSL_NO_QUIC */ +#endif /* OSSL_INTERNAL_PACKET_QUIC_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_build_set.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_build_set.h index 126211b7..3518f008 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_build_set.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_build_set.h @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,6 +39,11 @@ int ossl_param_build_set_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, const char *key, const BIGNUM *bn); int ossl_param_build_set_bn_pad(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, const char *key, const BIGNUM *bn, size_t sz); +int ossl_param_build_set_signed_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, + const char *key, const BIGNUM *bn); +int ossl_param_build_set_signed_bn_pad(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, + const char *key, const BIGNUM *bn, + size_t sz); int ossl_param_build_set_multi_key_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, const char *names[], STACK_OF(BIGNUM_const) *stk); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h new file mode 100644 index 00000000..e721d071 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h @@ -0,0 +1,376 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 290 + +#define PIDX_ALG_PARAM_CIPHER 0 +#define PIDX_ALG_PARAM_DIGEST 1 +#define PIDX_ALG_PARAM_ENGINE 2 +#define PIDX_ALG_PARAM_MAC 3 +#define PIDX_ALG_PARAM_PROPERTIES 4 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 5 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 6 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 7 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 8 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 9 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 10 +#define PIDX_CAPABILITY_TLS_GROUP_ID 11 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 12 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 13 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 14 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 15 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 17 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 18 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 20 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 21 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 22 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 23 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 24 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 14 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 27 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 28 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 30 +#define PIDX_CIPHER_PARAM_AEAD 31 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 32 +#define PIDX_CIPHER_PARAM_AEAD_TAG 33 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 34 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 35 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 36 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 37 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 39 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS 40 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 41 +#define PIDX_CIPHER_PARAM_CTS 42 +#define PIDX_CIPHER_PARAM_CTS_MODE 43 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 44 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 45 +#define PIDX_CIPHER_PARAM_IV 46 +#define PIDX_CIPHER_PARAM_IVLEN 47 +#define PIDX_CIPHER_PARAM_KEYLEN 48 +#define PIDX_CIPHER_PARAM_MODE 49 +#define PIDX_CIPHER_PARAM_NUM 50 +#define PIDX_CIPHER_PARAM_PADDING 51 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 52 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 53 +#define PIDX_CIPHER_PARAM_ROUNDS 54 +#define PIDX_CIPHER_PARAM_SPEED 55 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 56 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 57 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 58 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 59 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 60 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 61 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 64 +#define PIDX_CIPHER_PARAM_TLS_MAC 65 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 66 +#define PIDX_CIPHER_PARAM_TLS_VERSION 67 +#define PIDX_CIPHER_PARAM_UPDATED_IV 68 +#define PIDX_CIPHER_PARAM_USE_BITS 69 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 70 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 71 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 41 +#define PIDX_DIGEST_PARAM_MICALG 72 +#define PIDX_DIGEST_PARAM_PAD_TYPE 73 +#define PIDX_DIGEST_PARAM_SIZE 74 +#define PIDX_DIGEST_PARAM_SSL3_MS 75 +#define PIDX_DIGEST_PARAM_XOF 76 +#define PIDX_DIGEST_PARAM_XOFLEN 77 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 78 +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 79 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 80 +#define PIDX_DRBG_PARAM_MAX_LENGTH 81 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 82 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 83 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 84 +#define PIDX_DRBG_PARAM_MIN_LENGTH 85 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 86 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 87 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 88 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 89 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 90 +#define PIDX_DRBG_PARAM_RESEED_TIME 91 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 92 +#define PIDX_DRBG_PARAM_SIZE 74 +#define PIDX_DRBG_PARAM_USE_DF 93 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 94 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 95 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 96 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 97 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 98 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 99 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 100 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 101 +#define PIDX_EXCHANGE_PARAM_PAD 102 +#define PIDX_GEN_PARAM_ITERATION 103 +#define PIDX_GEN_PARAM_POTENTIAL 104 +#define PIDX_KDF_PARAM_ARGON2_AD 105 +#define PIDX_KDF_PARAM_ARGON2_LANES 106 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 107 +#define PIDX_KDF_PARAM_ARGON2_VERSION 108 +#define PIDX_KDF_PARAM_CEK_ALG 109 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 110 +#define PIDX_KDF_PARAM_DATA 111 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 112 +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 113 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 114 +#define PIDX_KDF_PARAM_INFO 115 +#define PIDX_KDF_PARAM_ITER 116 +#define PIDX_KDF_PARAM_KBKDF_R 117 +#define PIDX_KDF_PARAM_KBKDF_USE_L 118 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 119 +#define PIDX_KDF_PARAM_KEY 120 +#define PIDX_KDF_PARAM_LABEL 121 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 122 +#define PIDX_KDF_PARAM_MODE 49 +#define PIDX_KDF_PARAM_PASSWORD 123 +#define PIDX_KDF_PARAM_PKCS12_ID 124 +#define PIDX_KDF_PARAM_PKCS5 125 +#define PIDX_KDF_PARAM_PREFIX 126 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 127 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 128 +#define PIDX_KDF_PARAM_SCRYPT_N 129 +#define PIDX_KDF_PARAM_SCRYPT_P 130 +#define PIDX_KDF_PARAM_SCRYPT_R 117 +#define PIDX_KDF_PARAM_SECRET 131 +#define PIDX_KDF_PARAM_SEED 132 +#define PIDX_KDF_PARAM_SIZE 74 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 133 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 134 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 135 +#define PIDX_KDF_PARAM_THREADS 136 +#define PIDX_KDF_PARAM_UKM 137 +#define PIDX_KDF_PARAM_X942_ACVPINFO 138 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 139 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 140 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 141 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 142 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 143 +#define PIDX_KEM_PARAM_IKME 144 +#define PIDX_KEM_PARAM_OPERATION 145 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 146 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 147 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 148 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 49 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 149 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 150 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 151 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 152 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 153 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 154 +#define PIDX_MAC_PARAM_BLOCK_SIZE 155 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 156 +#define PIDX_MAC_PARAM_C_ROUNDS 157 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 158 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 159 +#define PIDX_MAC_PARAM_D_ROUNDS 160 +#define PIDX_MAC_PARAM_IV 46 +#define PIDX_MAC_PARAM_KEY 120 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 127 +#define PIDX_MAC_PARAM_SIZE 74 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 161 +#define PIDX_MAC_PARAM_XOF 76 +#define PIDX_OBJECT_PARAM_DATA 111 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 162 +#define PIDX_OBJECT_PARAM_DATA_TYPE 163 +#define PIDX_OBJECT_PARAM_DESC 164 +#define PIDX_OBJECT_PARAM_REFERENCE 165 +#define PIDX_OBJECT_PARAM_TYPE 134 +#define PIDX_PASSPHRASE_PARAM_INFO 115 +#define PIDX_PKEY_PARAM_BITS 166 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 167 +#define PIDX_PKEY_PARAM_DHKEM_IKM 168 +#define PIDX_PKEY_PARAM_DH_GENERATOR 169 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 170 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 171 +#define PIDX_PKEY_PARAM_DIST_ID 172 +#define PIDX_PKEY_PARAM_EC_A 173 +#define PIDX_PKEY_PARAM_EC_B 174 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 175 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 176 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 177 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 178 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 179 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 180 +#define PIDX_PKEY_PARAM_EC_COFACTOR 181 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 182 +#define PIDX_PKEY_PARAM_EC_ENCODING 183 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 184 +#define PIDX_PKEY_PARAM_EC_GENERATOR 185 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 186 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 187 +#define PIDX_PKEY_PARAM_EC_ORDER 188 +#define PIDX_PKEY_PARAM_EC_P 130 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 189 +#define PIDX_PKEY_PARAM_EC_PUB_X 190 +#define PIDX_PKEY_PARAM_EC_PUB_Y 191 +#define PIDX_PKEY_PARAM_EC_SEED 132 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 192 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 193 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 194 +#define PIDX_PKEY_PARAM_FFC_GINDEX 195 +#define PIDX_PKEY_PARAM_FFC_H 196 +#define PIDX_PKEY_PARAM_FFC_P 130 +#define PIDX_PKEY_PARAM_FFC_PBITS 197 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 198 +#define PIDX_PKEY_PARAM_FFC_Q 199 +#define PIDX_PKEY_PARAM_FFC_QBITS 200 +#define PIDX_PKEY_PARAM_FFC_SEED 132 +#define PIDX_PKEY_PARAM_FFC_TYPE 134 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 201 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 202 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 203 +#define PIDX_PKEY_PARAM_GROUP_NAME 204 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 5 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 205 +#define PIDX_PKEY_PARAM_MASKGENFUNC 206 +#define PIDX_PKEY_PARAM_MAX_SIZE 207 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 208 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 209 +#define PIDX_PKEY_PARAM_PAD_MODE 210 +#define PIDX_PKEY_PARAM_PRIV_KEY 211 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 212 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 213 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 214 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 215 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 216 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 217 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 218 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 219 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 220 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 221 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 222 +#define PIDX_PKEY_PARAM_RSA_D 223 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 224 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 225 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 226 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 227 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 228 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 229 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 230 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 231 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 232 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 233 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 234 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 235 +#define PIDX_PKEY_PARAM_RSA_FACTOR 236 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 237 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 238 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 239 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 240 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 241 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 242 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 243 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 244 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 245 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 246 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 129 +#define PIDX_PKEY_PARAM_RSA_PRIMES 247 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 248 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 249 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 250 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 251 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 252 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 253 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 254 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 255 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 256 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 257 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 258 +#define PIDX_PKEY_PARAM_SECURITY_BITS 259 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 260 +#define PIDX_PROV_PARAM_BUILDINFO 261 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 262 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 263 +#define PIDX_PROV_PARAM_CORE_VERSION 264 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 265 +#define PIDX_PROV_PARAM_NAME 266 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 267 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 268 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 269 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 270 +#define PIDX_PROV_PARAM_STATUS 271 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 272 +#define PIDX_PROV_PARAM_VERSION 108 +#define PIDX_RAND_PARAM_GENERATE 273 +#define PIDX_RAND_PARAM_MAX_REQUEST 274 +#define PIDX_RAND_PARAM_STATE 275 +#define PIDX_RAND_PARAM_STRENGTH 276 +#define PIDX_RAND_PARAM_TEST_ENTROPY 277 +#define PIDX_RAND_PARAM_TEST_NONCE 278 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID 279 +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 280 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_INSTANCE 281 +#define PIDX_SIGNATURE_PARAM_KAT 282 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 283 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 248 +#define PIDX_STORE_PARAM_ALIAS 284 +#define PIDX_STORE_PARAM_DIGEST 1 +#define PIDX_STORE_PARAM_EXPECT 285 +#define PIDX_STORE_PARAM_FINGERPRINT 286 +#define PIDX_STORE_PARAM_INPUT_TYPE 287 +#define PIDX_STORE_PARAM_ISSUER 266 +#define PIDX_STORE_PARAM_PROPERTIES 4 +#define PIDX_STORE_PARAM_SERIAL 288 +#define PIDX_STORE_PARAM_SUBJECT 289 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h.in new file mode 100644 index 00000000..f34db219 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/param_names.h.in @@ -0,0 +1,18 @@ +/* + * {- join("\n * ", @autowarntext) -} + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +{- +use OpenSSL::paramnames qw(generate_internal_macros); +-} + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +{- generate_internal_macros(); -} diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/params.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/params.h new file mode 100644 index 00000000..3fbd0cf9 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/params.h @@ -0,0 +1,38 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include + +/* + * Extract the parameter into an allocated buffer. + * Any existing allocation in *out is cleared and freed. + * + * Returns 1 on success, 0 on failure and -1 if there are no matching params. + * + * *out and *out_len are guaranteed to be untouched if this function + * doesn't return success. + */ +int ossl_param_get1_octet_string(const OSSL_PARAM *params, const char *name, + unsigned char **out, size_t *out_len); +/* + * Concatenate all of the matching params together. + * *out will point to an allocated buffer on successful return. + * Any existing allocation in *out is cleared and freed. + * + * Passing 0 for maxsize means unlimited size output. + * + * Returns 1 on success, 0 on failure and -1 if there are no matching params. + * + * *out and *out_len are guaranteed to be untouched if this function + * doesn't return success. + */ +int ossl_param_get1_concat_octet_string(const OSSL_PARAM *params, const char *name, + unsigned char **out, size_t *out_len, + size_t maxsize); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/priority_queue.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/priority_queue.h new file mode 100644 index 00000000..5be03bf1 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/priority_queue.h @@ -0,0 +1,88 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_PRIORITY_QUEUE_H +# define OSSL_INTERNAL_PRIORITY_QUEUE_H +# pragma once + +# include +# include + +# define PRIORITY_QUEUE_OF(type) OSSL_PRIORITY_QUEUE_ ## type + +# define DEFINE_PRIORITY_QUEUE_OF_INTERNAL(type, ctype) \ + typedef struct ossl_priority_queue_st_ ## type PRIORITY_QUEUE_OF(type); \ + static ossl_unused ossl_inline PRIORITY_QUEUE_OF(type) * \ + ossl_pqueue_##type##_new(int (*compare)(const ctype *, const ctype *)) \ + { \ + return (PRIORITY_QUEUE_OF(type) *)ossl_pqueue_new( \ + (int (*)(const void *, const void *))compare); \ + } \ + static ossl_unused ossl_inline void \ + ossl_pqueue_##type##_free(PRIORITY_QUEUE_OF(type) *pq) \ + { \ + ossl_pqueue_free((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline void \ + ossl_pqueue_##type##_pop_free(PRIORITY_QUEUE_OF(type) *pq, \ + void (*freefunc)(ctype *)) \ + { \ + ossl_pqueue_pop_free((OSSL_PQUEUE *)pq, (void (*)(void *))freefunc);\ + } \ + static ossl_unused ossl_inline int \ + ossl_pqueue_##type##_reserve(PRIORITY_QUEUE_OF(type) *pq, size_t n) \ + { \ + return ossl_pqueue_reserve((OSSL_PQUEUE *)pq, n); \ + } \ + static ossl_unused ossl_inline size_t \ + ossl_pqueue_##type##_num(const PRIORITY_QUEUE_OF(type) *pq) \ + { \ + return ossl_pqueue_num((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline int \ + ossl_pqueue_##type##_push(PRIORITY_QUEUE_OF(type) *pq, \ + ctype *data, size_t *elem) \ + { \ + return ossl_pqueue_push((OSSL_PQUEUE *)pq, (void *)data, elem); \ + } \ + static ossl_unused ossl_inline ctype * \ + ossl_pqueue_##type##_peek(const PRIORITY_QUEUE_OF(type) *pq) \ + { \ + return (type *)ossl_pqueue_peek((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline ctype * \ + ossl_pqueue_##type##_pop(PRIORITY_QUEUE_OF(type) *pq) \ + { \ + return (type *)ossl_pqueue_pop((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline ctype * \ + ossl_pqueue_##type##_remove(PRIORITY_QUEUE_OF(type) *pq, \ + size_t elem) \ + { \ + return (type *)ossl_pqueue_remove((OSSL_PQUEUE *)pq, elem); \ + } \ + struct ossl_priority_queue_st_ ## type + +# define DEFINE_PRIORITY_QUEUE_OF(type) \ + DEFINE_PRIORITY_QUEUE_OF_INTERNAL(type, type) + +typedef struct ossl_pqueue_st OSSL_PQUEUE; + +OSSL_PQUEUE *ossl_pqueue_new(int (*compare)(const void *, const void *)); +void ossl_pqueue_free(OSSL_PQUEUE *pq); +void ossl_pqueue_pop_free(OSSL_PQUEUE *pq, void (*freefunc)(void *)); +int ossl_pqueue_reserve(OSSL_PQUEUE *pq, size_t n); + +size_t ossl_pqueue_num(const OSSL_PQUEUE *pq); +int ossl_pqueue_push(OSSL_PQUEUE *pq, void *data, size_t *elem); +void *ossl_pqueue_peek(const OSSL_PQUEUE *pq); +void *ossl_pqueue_pop(OSSL_PQUEUE *pq); +void *ossl_pqueue_remove(OSSL_PQUEUE *pq, size_t elem); + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/property.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/property.h index d09274d0..3adff499 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/property.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/property.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/provider.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/provider.h index 18937f84..ab41d643 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/provider.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/provider.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -32,7 +32,7 @@ OSSL_PROVIDER *ossl_provider_find(OSSL_LIB_CTX *libctx, const char *name, int noconfig); OSSL_PROVIDER *ossl_provider_new(OSSL_LIB_CTX *libctx, const char *name, OSSL_provider_init_fn *init_function, - int noconfig); + OSSL_PARAM *params, int noconfig); int ossl_provider_up_ref(OSSL_PROVIDER *prov); void ossl_provider_free(OSSL_PROVIDER *prov); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ackm.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ackm.h new file mode 100644 index 00000000..03fc6088 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ackm.h @@ -0,0 +1,297 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_QUIC_ACKM_H +# define OSSL_QUIC_ACKM_H + +# include "internal/quic_statm.h" +# include "internal/quic_cc.h" +# include "internal/quic_types.h" +# include "internal/quic_wire.h" +# include "internal/time.h" +# include "internal/list.h" + +# ifndef OPENSSL_NO_QUIC + +typedef struct ossl_ackm_st OSSL_ACKM; + +OSSL_ACKM *ossl_ackm_new(OSSL_TIME (*now)(void *arg), + void *now_arg, + OSSL_STATM *statm, + const OSSL_CC_METHOD *cc_method, + OSSL_CC_DATA *cc_data); +void ossl_ackm_free(OSSL_ACKM *ackm); + +void ossl_ackm_set_loss_detection_deadline_callback(OSSL_ACKM *ackm, + void (*fn)(OSSL_TIME deadline, + void *arg), + void *arg); + +void ossl_ackm_set_ack_deadline_callback(OSSL_ACKM *ackm, + void (*fn)(OSSL_TIME deadline, + int pkt_space, + void *arg), + void *arg); + +/* + * Configures the RX-side maximum ACK delay. This is the maximum amount of time + * the peer is allowed to delay sending an ACK frame after receiving an + * ACK-eliciting packet. The peer communicates this value via a transport + * parameter and it must be provided to the ACKM. + */ +void ossl_ackm_set_rx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME rx_max_ack_delay); + +/* + * Configures the TX-side maximum ACK delay. This is the maximum amount of time + * we are allowed to delay sending an ACK frame after receiving an ACK-eliciting + * packet. Note that this cannot be changed after a connection is established as + * it must be accurately reported in the transport parameters we send to our + * peer. + */ +void ossl_ackm_set_tx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME tx_max_ack_delay); + +typedef struct ossl_ackm_tx_pkt_st OSSL_ACKM_TX_PKT; +struct ossl_ackm_tx_pkt_st { + /* The packet number of the transmitted packet. */ + QUIC_PN pkt_num; + + /* The number of bytes in the packet which was sent. */ + size_t num_bytes; + + /* The time at which the packet was sent. */ + OSSL_TIME time; + + /* + * If the packet being described by this structure contains an ACK frame, + * this must be set to the largest PN ACK'd by that frame. + * + * Otherwise, it should be set to QUIC_PN_INVALID. + * + * This is necessary to bound the number of PNs we have to keep track of on + * the RX side (RFC 9000 s. 13.2.4). It allows older PN tracking information + * on the RX side to be discarded. + */ + QUIC_PN largest_acked; + + /* + * One of the QUIC_PN_SPACE_* values. This qualifies the pkt_num field + * into a packet number space. + */ + unsigned int pkt_space :2; + + /* + * 1 if the packet is in flight. A packet is considered 'in flight' if it is + * counted for purposes of congestion control and 'bytes in flight' counts. + * Most packets are considered in flight. The only circumstance where a + * numbered packet is not considered in flight is if it contains only ACK + * frames (not even PADDING frames), as these frames can bypass CC. + */ + unsigned int is_inflight :1; + + /* + * 1 if the packet has one or more ACK-eliciting frames. + * Note that if this is set, is_inflight must be set. + */ + unsigned int is_ack_eliciting :1; + + /* 1 if the packet is a PTO probe. */ + unsigned int is_pto_probe :1; + + /* 1 if the packet is an MTU probe. */ + unsigned int is_mtu_probe :1; + + /* Callback called if frames in this packet are lost. arg is cb_arg. */ + void (*on_lost)(void *arg); + /* Callback called if frames in this packet are acked. arg is cb_arg. */ + void (*on_acked)(void *arg); + /* + * Callback called if frames in this packet are neither acked nor lost. arg + * is cb_arg. + */ + void (*on_discarded)(void *arg); + void *cb_arg; + + /* + * (Internal use fields; must be zero-initialized.) + * + * Keep a TX history list, anext is used to manifest + * a singly-linked list of newly-acknowledged packets, and lnext is used to + * manifest a singly-linked list of newly lost packets. + */ + OSSL_LIST_MEMBER(tx_history, OSSL_ACKM_TX_PKT); + + struct ossl_ackm_tx_pkt_st *anext; + struct ossl_ackm_tx_pkt_st *lnext; +}; + +int ossl_ackm_on_tx_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt); +int ossl_ackm_on_rx_datagram(OSSL_ACKM *ackm, size_t num_bytes); + +# define OSSL_ACKM_ECN_NONE 0 +# define OSSL_ACKM_ECN_ECT1 1 +# define OSSL_ACKM_ECN_ECT0 2 +# define OSSL_ACKM_ECN_ECNCE 3 + +typedef struct ossl_ackm_rx_pkt_st { + /* The packet number of the received packet. */ + QUIC_PN pkt_num; + + /* The time at which the packet was received. */ + OSSL_TIME time; + + /* + * One of the QUIC_PN_SPACE_* values. This qualifies the pkt_num field + * into a packet number space. + */ + unsigned int pkt_space :2; + + /* 1 if the packet has one or more ACK-eliciting frames. */ + unsigned int is_ack_eliciting :1; + + /* + * One of the OSSL_ACKM_ECN_* values. This is the ECN labelling applied to + * the received packet. If unknown, use OSSL_ACKM_ECN_NONE. + */ + unsigned int ecn :2; +} OSSL_ACKM_RX_PKT; + +int ossl_ackm_on_rx_packet(OSSL_ACKM *ackm, const OSSL_ACKM_RX_PKT *pkt); + +int ossl_ackm_on_rx_ack_frame(OSSL_ACKM *ackm, const OSSL_QUIC_FRAME_ACK *ack, + int pkt_space, OSSL_TIME rx_time); + +/* + * Discards a PN space. This must be called for a PN space before freeing the + * ACKM if you want in-flight packets to have their discarded callbacks called. + * This should never be called in ordinary QUIC usage for the Application Data + * PN space, but it may be called for the Application Data PN space prior to + * freeing the ACKM to simplify teardown implementations. + */ +int ossl_ackm_on_pkt_space_discarded(OSSL_ACKM *ackm, int pkt_space); + +int ossl_ackm_on_handshake_confirmed(OSSL_ACKM *ackm); +int ossl_ackm_on_timeout(OSSL_ACKM *ackm); + +OSSL_TIME ossl_ackm_get_loss_detection_deadline(OSSL_ACKM *ackm); + +/* + * Generates an ACK frame, regardless of whether the ACK manager thinks + * one should currently be sent. + * + * This clears the flag returned by ossl_ackm_is_ack_desired and the deadline + * returned by ossl_ackm_get_ack_deadline. + */ +const OSSL_QUIC_FRAME_ACK *ossl_ackm_get_ack_frame(OSSL_ACKM *ackm, + int pkt_space); + +/* + * Returns the deadline after which an ACK frame should be generated by calling + * ossl_ackm_get_ack_frame, or OSSL_TIME_INFINITY if no deadline is currently + * applicable. If the deadline has already passed, this function may return that + * deadline, or may return OSSL_TIME_ZERO. + */ +OSSL_TIME ossl_ackm_get_ack_deadline(OSSL_ACKM *ackm, int pkt_space); + +/* + * Returns 1 if the ACK manager thinks an ACK frame ought to be generated and + * sent at this time. ossl_ackm_get_ack_frame will always provide an ACK frame + * whether or not this returns 1, so it is suggested that you call this function + * first to determine whether you need to generate an ACK frame. + * + * The return value of this function can change based on calls to + * ossl_ackm_on_rx_packet and based on the passage of time (see + * ossl_ackm_get_ack_deadline). + */ +int ossl_ackm_is_ack_desired(OSSL_ACKM *ackm, int pkt_space); + +/* + * Returns 1 if the given RX PN is 'processable'. A processable PN is one that + * is not either + * + * - duplicate, meaning that we have already been passed such a PN in a call + * to ossl_ackm_on_rx_packet; or + * + * - written off, meaning that the PN is so old we have stopped tracking state + * for it (meaning that we cannot tell whether it is a duplicate and cannot + * process it safely). + * + * This should be called for a packet before attempting to process its contents. + * Failure to do so may result in processing a duplicated packet in violation of + * the RFC. + * + * The return value of this function transitions from 1 to 0 for a given PN once + * that PN is passed to ossl_ackm_on_rx_packet, thus this function must be used + * before calling ossl_ackm_on_rx_packet. + */ +int ossl_ackm_is_rx_pn_processable(OSSL_ACKM *ackm, QUIC_PN pn, int pkt_space); + +typedef struct ossl_ackm_probe_info_st { + /* + * The following two probe request types are used only for anti-deadlock + * purposes in relation to the anti-amplification logic, by generating + * packets to buy ourselves more anti-amplification credit with the server + * until a client address is verified. Note that like all Initial packets, + * any Initial probes are padded. + * + * Note: The ACKM will only ever increase these by one at a time, + * as only one probe packet should be generated for these cases. + */ + uint32_t anti_deadlock_initial, anti_deadlock_handshake; + + /* + * Send an ACK-eliciting packet for each count here. + * + * Note: The ACKM may increase this by either one or two for each probe + * request, depending on how many probe packets it thinks should be + * generated. + */ + uint32_t pto[QUIC_PN_SPACE_NUM]; +} OSSL_ACKM_PROBE_INFO; + +/* + * Returns a pointer to a structure counting any pending probe requests which + * have been generated by the ACKM. The fields in the structure are incremented + * by one every time the ACKM wants another probe of the given type to be sent. + * If the ACKM thinks two packets should be generated for a probe, it will + * increment the field twice. + * + * It is permissible for the caller to decrement or zero these fields to keep + * track of when it has generated a probe as asked. The returned structure + * has the same lifetime as the ACKM. + * + * This function should be called after calling e.g. ossl_ackm_on_timeout + * to determine if any probe requests have been generated. + */ +OSSL_ACKM_PROBE_INFO *ossl_ackm_get0_probe_request(OSSL_ACKM *ackm); + +int ossl_ackm_get_largest_unacked(OSSL_ACKM *ackm, int pkt_space, QUIC_PN *pn); + +/* + * Forces the ACKM to consider a packet with the given PN in the given PN space + * as having been pseudo-lost. The main reason to use this is during a Retry, to + * force any resources sent in the first Initial packet to be resent. + * + * The lost callback is called for the packet, but the packet is NOT considered + * lost for congestion control purposes. Thus this is not exactly the same as a + * true loss situation. + */ +int ossl_ackm_mark_packet_pseudo_lost(OSSL_ACKM *ackm, + int pkt_space, QUIC_PN pn); + +/* + * Returns the PTO duration as currently calculated. This is a quantity of time. + * This duration is used in various parts of QUIC besides the ACKM. + */ +OSSL_TIME ossl_ackm_get_pto_duration(OSSL_ACKM *ackm); + +/* Returns the largest acked PN in the given PN space. */ +QUIC_PN ossl_ackm_get_largest_acked(OSSL_ACKM *ackm, int pkt_space); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cc.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cc.h new file mode 100644 index 00000000..60c710b0 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cc.h @@ -0,0 +1,219 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_QUIC_CC_H +# define OSSL_QUIC_CC_H + +#include "openssl/params.h" +#include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +typedef struct ossl_cc_data_st OSSL_CC_DATA; + +typedef struct ossl_cc_ack_info_st { + /* The time the packet being acknowledged was originally sent. */ + OSSL_TIME tx_time; + + /* The size in bytes of the packet being acknowledged. */ + size_t tx_size; +} OSSL_CC_ACK_INFO; + +typedef struct ossl_cc_loss_info_st { + /* The time the packet being lost was originally sent. */ + OSSL_TIME tx_time; + + /* The size in bytes of the packet which has been determined lost. */ + size_t tx_size; +} OSSL_CC_LOSS_INFO; + +typedef struct ossl_cc_ecn_info_st { + /* + * The time at which the largest acked PN (in the incoming ACK frame) was + * sent. + */ + OSSL_TIME largest_acked_time; +} OSSL_CC_ECN_INFO; + +/* Parameter (read-write): Maximum datagram payload length in bytes. */ +#define OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN "max_dgram_payload_len" + +/* Diagnostic (read-only): current congestion window size in bytes. */ +#define OSSL_CC_OPTION_CUR_CWND_SIZE "cur_cwnd_size" + +/* Diagnostic (read-only): minimum congestion window size in bytes. */ +#define OSSL_CC_OPTION_MIN_CWND_SIZE "min_cwnd_size" + +/* Diagnostic (read-only): current net bytes in flight. */ +#define OSSL_CC_OPTION_CUR_BYTES_IN_FLIGHT "bytes_in_flight" + +/* Diagnostic (read-only): method-specific state value. */ +#define OSSL_CC_OPTION_CUR_STATE "cur_state" + +/* + * Congestion control abstract interface. + * + * This interface is broadly based on the design described in RFC 9002. However, + * the demarcation between the ACKM and the congestion controller does not + * exactly match that delineated in the RFC 9002 pseudocode. Where aspects of + * the demarcation involve the congestion controller accessing internal state of + * the ACKM, the interface has been revised where possible to provide the + * information needed by the congestion controller and avoid needing to give the + * congestion controller access to the ACKM's internal data structures. + * + * Particular changes include: + * + * - In our implementation, it is the responsibility of the ACKM to determine + * if a loss event constitutes persistent congestion. + * + * - In our implementation, it is the responsibility of the ACKM to determine + * if the ECN-CE counter has increased. The congestion controller is simply + * informed when an ECN-CE event occurs. + * + * All of these changes are intended to avoid having a congestion controller + * have to access ACKM internal state. + */ +#define OSSL_CC_LOST_FLAG_PERSISTENT_CONGESTION (1U << 0) + +typedef struct ossl_cc_method_st { + /* + * Instantiation. + */ + OSSL_CC_DATA *(*new)(OSSL_TIME (*now_cb)(void *arg), + void *now_cb_arg); + + void (*free)(OSSL_CC_DATA *ccdata); + + /* + * Reset of state. + */ + void (*reset)(OSSL_CC_DATA *ccdata); + + /* + * Escape hatch for option configuration. + * + * params is an array of OSSL_PARAM structures. + * + * Returns 1 on success and 0 on failure. + */ + int (*set_input_params)(OSSL_CC_DATA *ccdata, + const OSSL_PARAM *params); + + /* + * (Re)bind output (diagnostic) information. + * + * params is an array of OSSL_PARAM structures used to output values. The + * storage locations associated with each parameter are stored internally + * and updated whenever the state of the congestion controller is updated; + * thus, the storage locations associated with the OSSL_PARAMs passed in the + * call to this function must remain valid until the congestion controller + * is freed or those parameters are unbound. A given parameter name may be + * bound to only one location at a time. The params structures themselves + * do not need to remain allocated after this call returns. + * + * Returns 1 on success and 0 on failure. + */ + int (*bind_diagnostics)(OSSL_CC_DATA *ccdata, + OSSL_PARAM *params); + + /* + * Unbind diagnostic information. The parameters with the given names are + * unbound, cancelling the effects of a previous call to bind_diagnostic(). + * params is an array of OSSL_PARAMs. The values of the parameters are + * ignored. If a parameter is already unbound, there is no effect for that + * parameter but other parameters are still unbound. + * + * Returns 1 on success or 0 on failure. + */ + int (*unbind_diagnostics)(OSSL_CC_DATA *ccdata, + OSSL_PARAM *params); + + /* + * Returns the amount of additional data (above and beyond the data + * currently in flight) which can be sent in bytes. Returns 0 if no more + * data can be sent at this time. The return value of this method + * can vary as time passes. + */ + uint64_t (*get_tx_allowance)(OSSL_CC_DATA *ccdata); + + /* + * Returns the time at which the return value of get_tx_allowance might be + * higher than its current value. This is not a guarantee and spurious + * wakeups are allowed. Returns ossl_time_infinite() if there is no current + * wakeup deadline. + */ + OSSL_TIME (*get_wakeup_deadline)(OSSL_CC_DATA *ccdata); + + /* + * The On Data Sent event. num_bytes should be the size of the packet in + * bytes (or the aggregate size of multiple packets which have just been + * sent). + */ + int (*on_data_sent)(OSSL_CC_DATA *ccdata, + uint64_t num_bytes); + + /* + * The On Data Acked event. See OSSL_CC_ACK_INFO structure for details + * of the information to be passed. + */ + int (*on_data_acked)(OSSL_CC_DATA *ccdata, + const OSSL_CC_ACK_INFO *info); + + /* + * The On Data Lost event. See OSSL_CC_LOSS_INFO structure for details + * of the information to be passed. + * + * Note: When the ACKM determines that a set of multiple packets has been + * lost, it is useful for a congestion control algorithm to be able to + * process this as a single loss event rather than multiple loss events. + * Thus, calling this function may cause the congestion controller to defer + * state updates under the assumption that subsequent calls to + * on_data_lost() representing further lost packets in the same loss event + * may be forthcoming. Always call on_data_lost_finished() after one or more + * calls to on_data_lost(). + */ + int (*on_data_lost)(OSSL_CC_DATA *ccdata, + const OSSL_CC_LOSS_INFO *info); + + /* + * To be called after a sequence of one or more on_data_lost() calls + * representing multiple packets in a single loss detection incident. + * + * Flags may be 0 or OSSL_CC_LOST_FLAG_PERSISTENT_CONGESTION. + */ + int (*on_data_lost_finished)(OSSL_CC_DATA *ccdata, uint32_t flags); + + /* + * For use when a PN space is invalidated or a packet must otherwise be + * 'undone' for congestion control purposes without acting as a loss signal. + * Only the size of the packet is needed. + */ + int (*on_data_invalidated)(OSSL_CC_DATA *ccdata, + uint64_t num_bytes); + + /* + * Called from the ACKM when detecting an increased ECN-CE value in an ACK + * frame. This indicates congestion. + * + * Note that this differs from the RFC's conceptual segregation of the loss + * detection and congestion controller functions, as in our implementation + * the ACKM is responsible for detecting increases to ECN-CE and simply + * tells the congestion controller when ECN-triggered congestion has + * occurred. This allows a slightly more efficient implementation and + * narrower interface between the ACKM and CC. + */ + int (*on_ecn)(OSSL_CC_DATA *ccdata, + const OSSL_CC_ECN_INFO *info); +} OSSL_CC_METHOD; + +extern const OSSL_CC_METHOD ossl_cc_dummy_method; +extern const OSSL_CC_METHOD ossl_cc_newreno_method; + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cfq.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cfq.h new file mode 100644 index 00000000..22c436dc --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_cfq.h @@ -0,0 +1,154 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_CFQ_H +# define OSSL_QUIC_CFQ_H + +# include +# include "internal/quic_types.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Control Frame Queue Item + * ============================= + * + * The CFQ item structure has a public and a private part. This structure + * documents the public part. + */ +typedef struct quic_cfq_item_st QUIC_CFQ_ITEM; + +struct quic_cfq_item_st { + /* + * These fields are not used by the CFQ, but are a convenience to assist the + * TXPIM in keeping a list of GCR control frames which were sent in a + * packet. They may be used for any purpose. + */ + QUIC_CFQ_ITEM *pkt_prev, *pkt_next; + + /* All other fields are private; use ossl_quic_cfq_item_* accessors. */ +}; + +# define QUIC_CFQ_STATE_NEW 0 +# define QUIC_CFQ_STATE_TX 1 + +/* If set, do not retransmit on loss */ +#define QUIC_CFQ_ITEM_FLAG_UNRELIABLE (1U << 0) + +/* Returns the frame type of a CFQ item. */ +uint64_t ossl_quic_cfq_item_get_frame_type(const QUIC_CFQ_ITEM *item); + +/* Returns a pointer to the encoded buffer of a CFQ item. */ +const unsigned char *ossl_quic_cfq_item_get_encoded(const QUIC_CFQ_ITEM *item); + +/* Returns the length of the encoded buffer in bytes. */ +size_t ossl_quic_cfq_item_get_encoded_len(const QUIC_CFQ_ITEM *item); + +/* Returns the CFQ item state, a QUIC_CFQ_STATE_* value. */ +int ossl_quic_cfq_item_get_state(const QUIC_CFQ_ITEM *item); + +/* Returns the PN space for the CFQ item. */ +uint32_t ossl_quic_cfq_item_get_pn_space(const QUIC_CFQ_ITEM *item); + +/* Returns 1 if this is an unreliable frame. */ +int ossl_quic_cfq_item_is_unreliable(const QUIC_CFQ_ITEM *item); + +/* + * QUIC Control Frame Queue + * ======================== + */ +typedef struct quic_cfq_st QUIC_CFQ; + +QUIC_CFQ *ossl_quic_cfq_new(void); +void ossl_quic_cfq_free(QUIC_CFQ *cfq); + +/* + * Input Side + * ---------- + */ + +/* + * Enqueue a frame to the CFQ. + * + * encoded points to the opaque encoded frame. + * + * free_cb is called by the CFQ when the buffer is no longer needed; + * free_cb_arg is an opaque value passed to free_cb. + * + * priority determines the relative ordering of control frames in a packet. + * Lower numerical values for priority mean that a frame should come earlier in + * a packet. pn_space is a QUIC_PN_SPACE_* value. + * + * On success, returns a QUIC_CFQ_ITEM pointer which acts as a handle to + * the queued frame. On failure, returns NULL. + * + * The frame is initially in the TX state, so there is no need to call + * ossl_quic_cfq_mark_tx() immediately after calling this function. + * + * The frame type is duplicated as the frame_type argument here, even though it + * is also encoded into the buffer. This allows the caller to determine the + * frame type if desired without having to decode the frame. + * + * flags is zero or more QUIC_CFQ_ITEM_FLAG values. + */ +typedef void (cfq_free_cb)(unsigned char *buf, size_t buf_len, void *arg); + +QUIC_CFQ_ITEM *ossl_quic_cfq_add_frame(QUIC_CFQ *cfq, + uint32_t priority, + uint32_t pn_space, + uint64_t frame_type, + uint32_t flags, + const unsigned char *encoded, + size_t encoded_len, + cfq_free_cb *free_cb, + void *free_cb_arg); + +/* + * Effects an immediate transition of the given CFQ item to the TX state. + */ +void ossl_quic_cfq_mark_tx(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item); + +/* + * Effects an immediate transition of the given CFQ item to the NEW state, + * allowing the frame to be retransmitted. If priority is not UINT32_MAX, + * the priority is changed to the given value. + */ +void ossl_quic_cfq_mark_lost(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item, + uint32_t priority); + +/* + * Releases a CFQ item. The item may be in either state (NEW or TX) prior to the + * call. The QUIC_CFQ_ITEM pointer must not be used following this call. + */ +void ossl_quic_cfq_release(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item); + +/* + * Output Side + * ----------- + */ + +/* + * Gets the highest priority CFQ item in the given PN space awaiting + * transmission. If there are none, returns NULL. + */ +QUIC_CFQ_ITEM *ossl_quic_cfq_get_priority_head(const QUIC_CFQ *cfq, + uint32_t pn_space); + +/* + * Given a CFQ item, gets the next CFQ item awaiting transmission in priority + * order in the given PN space. In other words, given the return value of + * ossl_quic_cfq_get_priority_head(), returns the next-lower priority item. + * Returns NULL if the given item is the last item in priority order. + */ +QUIC_CFQ_ITEM *ossl_quic_cfq_item_get_priority_next(const QUIC_CFQ_ITEM *item, + uint32_t pn_space); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_channel.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_channel.h new file mode 100644 index 00000000..f46db063 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_channel.h @@ -0,0 +1,429 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_CHANNEL_H +# define OSSL_QUIC_CHANNEL_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_stream_map.h" +# include "internal/quic_reactor.h" +# include "internal/quic_statm.h" +# include "internal/time.h" +# include "internal/thread.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Channel + * ============ + * + * A QUIC channel (QUIC_CHANNEL) is an object which binds together all of the + * various pieces of QUIC into a single top-level object, and handles connection + * state which is not specific to the client or server roles. In particular, it + * is strictly separated from the libssl front end I/O API personality layer, + * and is not an SSL object. + * + * The name QUIC_CHANNEL is chosen because QUIC_CONNECTION is already in use, + * but functionally these relate to the same thing (a QUIC connection). The use + * of two separate objects ensures clean separation between the API personality + * layer and common code for handling connections, and between the functionality + * which is specific to clients and which is specific to servers, and the + * functionality which is common to both. + * + * The API personality layer provides SSL objects (e.g. a QUIC_CONNECTION) which + * consume a QUIC channel and implement a specific public API. Things which are + * handled by the API personality layer include emulation of blocking semantics, + * handling of SSL object mode flags like non-partial write mode, etc. + * + * Where the QUIC_CHANNEL is used in a server role, there is one QUIC_CHANNEL + * per connection. In the future a QUIC Channel Manager will probably be defined + * to handle ownership of resources which are shared between connections (e.g. + * demuxers). Since we only use server-side functionality for dummy test servers + * for now, which only need to handle one connection at a time, this is not + * currently modelled. + * + * Synchronisation + * --------------- + * + * To support thread assisted mode, QUIC_CHANNEL can be used by multiple + * threads. **It is the caller's responsibility to ensure that the QUIC_CHANNEL + * is only accessed (whether via its methods or via direct access to its state) + * while the channel mutex is held**, except for methods explicitly marked as + * not requiring prior locking. This is an unchecked precondition. + * + * The instantiator of the channel is responsible for providing a suitable + * mutex which then serves as the channel mutex; see QUIC_CHANNEL_ARGS. + */ + +/* + * The function does not acquire the channel mutex and assumes it is already + * held by the calling thread. + * + * Any function tagged with this has the following precondition: + * + * Precondition: must hold channel mutex (unchecked) + */ +# define QUIC_NEEDS_LOCK + +/* + * The function acquires the channel mutex and releases it before returning in + * all circumstances. + * + * Any function tagged with this has the following precondition and + * postcondition: + * + * Precondition: must not hold channel mutex (unchecked) + * Postcondition: channel mutex is not held (by calling thread) + */ +# define QUIC_TAKES_LOCK + +/* + * The function acquires the channel mutex and leaves it acquired + * when returning success. + * + * Any function tagged with this has the following precondition and + * postcondition: + * + * Precondition: must not hold channel mutex (unchecked) + * Postcondition: channel mutex is held by calling thread + * or function returned failure + */ +# define QUIC_ACQUIRES_LOCK + +# define QUIC_TODO_LOCK + +# define QUIC_CHANNEL_STATE_IDLE 0 +# define QUIC_CHANNEL_STATE_ACTIVE 1 +# define QUIC_CHANNEL_STATE_TERMINATING_CLOSING 2 +# define QUIC_CHANNEL_STATE_TERMINATING_DRAINING 3 +# define QUIC_CHANNEL_STATE_TERMINATED 4 + +typedef struct quic_channel_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + int is_server; + SSL *tls; + + /* + * This must be a mutex the lifetime of which will exceed that of the + * channel. The instantiator of the channel is responsible for providing a + * mutex as this makes it easier to handle instantiation and teardown of + * channels in situations potentially requiring locking. + * + * Note that this is a MUTEX not a RWLOCK as it needs to be an OS mutex for + * compatibility with an OS's condition variable wait API, whereas RWLOCK + * may, depending on the build configuration, be implemented using an OS's + * mutex primitive or using its RW mutex primitive. + */ + CRYPTO_MUTEX *mutex; + + /* + * Optional function pointer to use to retrieve the current time. If NULL, + * ossl_time_now() is used. + */ + OSSL_TIME (*now_cb)(void *arg); + void *now_cb_arg; +} QUIC_CHANNEL_ARGS; + +typedef struct quic_channel_st QUIC_CHANNEL; + +/* Represents the cause for a connection's termination. */ +typedef struct quic_terminate_cause_st { + /* + * If we are in a TERMINATING or TERMINATED state, this is the error code + * associated with the error. This field is valid iff we are in the + * TERMINATING or TERMINATED states. + */ + uint64_t error_code; + + /* + * If terminate_app is set and this is nonzero, this is the frame type which + * caused the connection to be terminated. + */ + uint64_t frame_type; + + /* + * Optional reason string. When calling ossl_quic_channel_local_close, if a + * reason string pointer is passed, it is copied and stored inside + * QUIC_CHANNEL for the remainder of the lifetime of the channel object. + * Thus the string pointed to by this value, if non-NULL, is valid for the + * lifetime of the QUIC_CHANNEL object. + */ + const char *reason; + + /* + * Length of reason in bytes. The reason is supposed to contain a UTF-8 + * string but may be arbitrary data if the reason came from the network. + */ + size_t reason_len; + + /* Is this error code in the transport (0) or application (1) space? */ + unsigned int app : 1; + + /* + * If set, the cause of the termination is a received CONNECTION_CLOSE + * frame. Otherwise, we decided to terminate ourselves and sent a + * CONNECTION_CLOSE frame (regardless of whether the peer later also sends + * one). + */ + unsigned int remote : 1; +} QUIC_TERMINATE_CAUSE; + + +/* + * Create a new QUIC channel using the given arguments. The argument structure + * does not need to remain allocated. Returns NULL on failure. + */ +QUIC_CHANNEL *ossl_quic_channel_new(const QUIC_CHANNEL_ARGS *args); + +/* No-op if ch is NULL. */ +void ossl_quic_channel_free(QUIC_CHANNEL *ch); + +/* Set mutator callbacks for test framework support */ +int ossl_quic_channel_set_mutator(QUIC_CHANNEL *ch, + ossl_mutate_packet_cb mutatecb, + ossl_finish_mutate_cb finishmutatecb, + void *mutatearg); + +/* + * Connection Lifecycle Events + * =========================== + * + * Various events that can be raised on the channel by other parts of the QUIC + * implementation. Some of these are suitable for general use by any part of the + * code (e.g. ossl_quic_channel_raise_protocol_error), others are for very + * specific use by particular components only (e.g. + * ossl_quic_channel_on_handshake_confirmed). + */ + +/* + * To be used by a QUIC connection. Starts the channel. For a client-mode + * channel, this starts sending the first handshake layer message, etc. Can only + * be called in the idle state; successive calls are ignored. + */ +int ossl_quic_channel_start(QUIC_CHANNEL *ch); + +/* Start a locally initiated connection shutdown. */ +void ossl_quic_channel_local_close(QUIC_CHANNEL *ch, uint64_t app_error_code, + const char *app_reason); + +/* + * Called when the handshake is confirmed. + */ +int ossl_quic_channel_on_handshake_confirmed(QUIC_CHANNEL *ch); + +/* + * Raises a protocol error. This is intended to be the universal call suitable + * for handling of all peer-triggered protocol violations or errors detected by + * us. We specify a QUIC transport-scope error code and optional frame type + * which was responsible. If a frame type is not applicable, specify zero. The + * reason string is not currently handled, but should be a string of static + * storage duration. If the connection has already terminated due to a previous + * protocol error, this is a no-op; first error wins. + * + * Usually the ossl_quic_channel_raise_protocol_error() function should be used. + * The ossl_quic_channel_raise_protocol_error_loc() function can be used + * directly for passing through existing call site information from an existing + * error. + */ +void ossl_quic_channel_raise_protocol_error_loc(QUIC_CHANNEL *ch, + uint64_t error_code, + uint64_t frame_type, + const char *reason, + ERR_STATE *err_state, + const char *src_file, + int src_line, + const char *src_func); + +#define ossl_quic_channel_raise_protocol_error(ch, error_code, frame_type, reason) \ + ossl_quic_channel_raise_protocol_error_loc((ch), (error_code), \ + (frame_type), \ + (reason), \ + NULL, \ + OPENSSL_FILE, \ + OPENSSL_LINE, \ + OPENSSL_FUNC) + +#define ossl_quic_channel_raise_protocol_error_state(ch, error_code, frame_type, reason, state) \ + ossl_quic_channel_raise_protocol_error_loc((ch), (error_code), \ + (frame_type), \ + (reason), \ + (state), \ + OPENSSL_FILE, \ + OPENSSL_LINE, \ + OPENSSL_FUNC) + + +/* + * Returns 1 if permanent net error was detected on the QUIC_CHANNEL, + * 0 otherwise. + */ +int ossl_quic_channel_net_error(QUIC_CHANNEL *ch); + +/* Restore saved error state (best effort) */ +void ossl_quic_channel_restore_err_state(QUIC_CHANNEL *ch); + +/* For RXDP use. */ +void ossl_quic_channel_on_remote_conn_close(QUIC_CHANNEL *ch, + OSSL_QUIC_FRAME_CONN_CLOSE *f); +void ossl_quic_channel_on_new_conn_id(QUIC_CHANNEL *ch, + OSSL_QUIC_FRAME_NEW_CONN_ID *f); + +/* + * Queries and Accessors + * ===================== + */ + +/* Gets the reactor which can be used to tick/poll on the channel. */ +QUIC_REACTOR *ossl_quic_channel_get_reactor(QUIC_CHANNEL *ch); + +/* Gets the QSM used with the channel. */ +QUIC_STREAM_MAP *ossl_quic_channel_get_qsm(QUIC_CHANNEL *ch); + +/* Gets the statistics manager used with the channel. */ +OSSL_STATM *ossl_quic_channel_get_statm(QUIC_CHANNEL *ch); + +/* + * Gets/sets the current peer address. Generally this should be used before + * starting a channel in client mode. + */ +int ossl_quic_channel_get_peer_addr(QUIC_CHANNEL *ch, BIO_ADDR *peer_addr); +int ossl_quic_channel_set_peer_addr(QUIC_CHANNEL *ch, const BIO_ADDR *peer_addr); + +/* Gets/sets the underlying network read and write BIOs. */ +BIO *ossl_quic_channel_get_net_rbio(QUIC_CHANNEL *ch); +BIO *ossl_quic_channel_get_net_wbio(QUIC_CHANNEL *ch); +int ossl_quic_channel_set_net_rbio(QUIC_CHANNEL *ch, BIO *net_rbio); +int ossl_quic_channel_set_net_wbio(QUIC_CHANNEL *ch, BIO *net_wbio); + +/* + * Re-poll the network BIOs already set to determine if their support + * for polling has changed. + */ +int ossl_quic_channel_update_poll_descriptors(QUIC_CHANNEL *ch); + +/* + * Returns an existing stream by stream ID. Returns NULL if the stream does not + * exist. + */ +QUIC_STREAM *ossl_quic_channel_get_stream_by_id(QUIC_CHANNEL *ch, + uint64_t stream_id); + +/* Returns 1 if channel is terminating or terminated. */ +int ossl_quic_channel_is_term_any(const QUIC_CHANNEL *ch); +const QUIC_TERMINATE_CAUSE * +ossl_quic_channel_get_terminate_cause(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_closing(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_terminated(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_active(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_handshake_complete(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_handshake_confirmed(const QUIC_CHANNEL *ch); + +QUIC_DEMUX *ossl_quic_channel_get0_demux(QUIC_CHANNEL *ch); + +SSL *ossl_quic_channel_get0_ssl(QUIC_CHANNEL *ch); + +/* + * Retrieves a pointer to the channel mutex which was provided at the time the + * channel was instantiated. In order to allow locks to be acquired and released + * with the correct granularity, it is the caller's responsibility to ensure + * this lock is held for write while calling any QUIC_CHANNEL method, except for + * methods explicitly designed otherwise. + * + * This method is thread safe and does not require prior locking. It can also be + * called while the lock is already held. Note that this is simply a convenience + * function to access the mutex which was passed to the channel at instantiation + * time; it does not belong to the channel but rather is presumed to belong to + * the owner of the channel. + */ +CRYPTO_MUTEX *ossl_quic_channel_get_mutex(QUIC_CHANNEL *ch); + +/* + * Creates a new locally-initiated stream in the stream mapper, choosing an + * appropriate stream ID. If is_uni is 1, creates a unidirectional stream, else + * creates a bidirectional stream. Returns NULL on failure. + */ +QUIC_STREAM *ossl_quic_channel_new_stream_local(QUIC_CHANNEL *ch, int is_uni); + +/* + * Creates a new remotely-initiated stream in the stream mapper. The stream ID + * is used to confirm the initiator and determine the stream type. The stream is + * automatically added to the QSM's accept queue. A pointer to the stream is + * also returned. Returns NULL on failure. + */ +QUIC_STREAM *ossl_quic_channel_new_stream_remote(QUIC_CHANNEL *ch, + uint64_t stream_id); + +/* + * Configures incoming stream auto-reject. If enabled, incoming streams have + * both their sending and receiving parts automatically rejected using + * STOP_SENDING and STREAM_RESET frames. aec is the application error + * code to be used for those frames. + */ +void ossl_quic_channel_set_incoming_stream_auto_reject(QUIC_CHANNEL *ch, + int enable, + uint64_t aec); + +/* + * Causes the channel to reject the sending and receiving parts of a stream, + * as though autorejected. Can be used if a stream has already been + * accepted. + */ +void ossl_quic_channel_reject_stream(QUIC_CHANNEL *ch, QUIC_STREAM *qs); + +/* Replace local connection ID in TXP and DEMUX for testing purposes. */ +int ossl_quic_channel_replace_local_cid(QUIC_CHANNEL *ch, + const QUIC_CONN_ID *conn_id); + +/* Setters for the msg_callback and msg_callback_arg */ +void ossl_quic_channel_set_msg_callback(QUIC_CHANNEL *ch, + ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_quic_channel_set_msg_callback_arg(QUIC_CHANNEL *ch, + void *msg_callback_arg); + +/* Testing use only - sets a TXKU threshold packet count override value. */ +void ossl_quic_channel_set_txku_threshold_override(QUIC_CHANNEL *ch, + uint64_t tx_pkt_threshold); + +/* Testing use only - gets current 1-RTT key epochs for QTX and QRX. */ +uint64_t ossl_quic_channel_get_tx_key_epoch(QUIC_CHANNEL *ch); +uint64_t ossl_quic_channel_get_rx_key_epoch(QUIC_CHANNEL *ch); + +/* Artificially trigger a spontaneous TXKU if possible. */ +int ossl_quic_channel_trigger_txku(QUIC_CHANNEL *ch); +int ossl_quic_channel_has_pending(const QUIC_CHANNEL *ch); + +/* Force transmission of an ACK-eliciting packet. */ +int ossl_quic_channel_ping(QUIC_CHANNEL *ch); + +/* For testing use. While enabled, ticking is not performed. */ +void ossl_quic_channel_set_inhibit_tick(QUIC_CHANNEL *ch, int inhibit); + +/* + * These queries exist for diagnostic purposes only. They may roll over. + * Do not rely on them for non-testing purposes. + */ +uint16_t ossl_quic_channel_get_diag_num_rx_ack(QUIC_CHANNEL *ch); + +/* + * Diagnostic use only. Gets the current local CID. + */ +void ossl_quic_channel_get_diag_local_cid(QUIC_CHANNEL *ch, QUIC_CONN_ID *cid); + +/* + * Returns 1 if stream count flow control allows us to create a new + * locally-initiated stream. + */ +int ossl_quic_channel_is_new_local_stream_admissible(QUIC_CHANNEL *ch, int is_uni); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_demux.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_demux.h new file mode 100644 index 00000000..444249e7 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_demux.h @@ -0,0 +1,364 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_DEMUX_H +# define OSSL_QUIC_DEMUX_H + +# include +# include "internal/quic_types.h" +# include "internal/bio_addr.h" +# include "internal/time.h" +# include "internal/list.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Demuxer + * ============ + * + * The QUIC connection demuxer is the entity responsible for receiving datagrams + * from the network via a datagram BIO. It parses packet headers to determine + * each packet's destination connection ID (DCID) and hands off processing of + * the packet to the correct QUIC Record Layer (QRL)'s RX side (known as the + * QRX). + * + * A QRX is instantiated per QUIC connection and contains the cryptographic + * resources needed to decrypt QUIC packets for that connection. Received + * datagrams are passed from the demuxer to the QRX via a callback registered + * for a specific DCID by the QRX; thus the demuxer has no specific knowledge of + * the QRX and is not coupled to it. + * + * A connection may have multiple connection IDs associated with it; a QRX + * handles this simply by registering multiple connection IDs with the demuxer + * via multiple register calls. + * + * URX Queue + * --------- + * + * Since the demuxer must handle the initial reception of datagrams from the OS, + * RX queue management for new, unprocessed datagrams is also handled by the + * demuxer. + * + * The demuxer maintains a queue of Unprocessed RX Entries (URXEs), which store + * unprocessed (i.e., encrypted, unvalidated) data received from the network. + * The URXE queue is designed to allow multiple datagrams to be received in a + * single call to BIO_recvmmsg, where supported. + * + * One URXE is used per received datagram. Each datagram may contain multiple + * packets, however, this is not the demuxer's concern. QUIC prohibits different + * packets in the same datagram from containing different DCIDs; the demuxer + * only considers the DCID of the first packet in a datagram when deciding how + * to route a received datagram, and it is the responsibility of the QRX to + * enforce this rule. Packets other than the first packet in a datagram are not + * examined by the demuxer, and the demuxer does not perform validation of + * packet headers other than to the minimum extent necessary to extract the + * DCID; further parsing and validation of packet headers is the responsibility + * of the QRX. + * + * Rather than defining an opaque interface, the URXE structure internals + * are exposed. Since the demuxer is only exposed to other parts of the QUIC + * implementation internals, this poses no problem, and has a number of + * advantages: + * + * - Fields in the URXE can be allocated to support requirements in other + * components, like the QRX, which would otherwise have to allocate extra + * memory corresponding to each URXE. + * + * - Other components, like the QRX, can keep the URXE in queues of its own + * when it is not being managed by the demuxer. + * + * URX Queue Structure + * ------------------- + * + * The URXE queue is maintained as a simple doubly-linked list. URXE entries are + * moved between different lists in their lifecycle (for example, from a free + * list to a pending list and vice versa). The buffer into which datagrams are + * received immediately follows this URXE header structure and is part of the + * same allocation. + */ + +typedef struct quic_urxe_st QUIC_URXE; + +/* Maximum number of packets we allow to exist in one datagram. */ +#define QUIC_MAX_PKT_PER_URXE (sizeof(uint64_t) * 8) + +struct quic_urxe_st { + OSSL_LIST_MEMBER(urxe, QUIC_URXE); + + /* + * The URXE data starts after this structure so we don't need a pointer. + * data_len stores the current length (i.e., the length of the received + * datagram) and alloc_len stores the allocation length. The URXE will be + * reallocated if we need a larger allocation than is available, though this + * should not be common as we will have a good idea of worst-case MTUs up + * front. + */ + size_t data_len, alloc_len; + + /* + * Bitfields per packet. processed indicates the packet has been processed + * and must not be processed again, hpr_removed indicates header protection + * has already been removed. Used by QRX only; not used by the demuxer. + */ + uint64_t processed, hpr_removed; + + /* + * Address of peer we received the datagram from, and the local interface + * address we received it on. If local address support is not enabled, local + * is zeroed. + */ + BIO_ADDR peer, local; + + /* + * Time at which datagram was received (or ossl_time_zero()) if a now + * function was not provided). + */ + OSSL_TIME time; + + /* + * Used by the QRX to mark whether a datagram has been deferred. Used by the + * QRX only; not used by the demuxer. + */ + char deferred; + + /* + * Used by the DEMUX to track if a URXE has been handed out. Used primarily + * for debugging purposes. + */ + char demux_state; +}; + +/* Accessors for URXE buffer. */ +static ossl_unused ossl_inline unsigned char * +ossl_quic_urxe_data(const QUIC_URXE *e) +{ + return (unsigned char *)&e[1]; +} + +static ossl_unused ossl_inline unsigned char * +ossl_quic_urxe_data_end(const QUIC_URXE *e) +{ + return ossl_quic_urxe_data(e) + e->data_len; +} + +/* List structure tracking a queue of URXEs. */ +DEFINE_LIST_OF(urxe, QUIC_URXE); +typedef OSSL_LIST(urxe) QUIC_URXE_LIST; + +/* + * List management helpers. These are used by the demuxer but can also be used + * by users of the demuxer to manage URXEs. + */ +void ossl_quic_urxe_remove(QUIC_URXE_LIST *l, QUIC_URXE *e); +void ossl_quic_urxe_insert_head(QUIC_URXE_LIST *l, QUIC_URXE *e); +void ossl_quic_urxe_insert_tail(QUIC_URXE_LIST *l, QUIC_URXE *e); + +/* Opaque type representing a demuxer. */ +typedef struct quic_demux_st QUIC_DEMUX; + +/* + * Called when a datagram is received for a given connection ID. + * + * e is a URXE containing the datagram payload. It is permissible for the callee + * to mutate this buffer; once the demuxer calls this callback, it will never + * read the buffer again. + * + * The callee must arrange for ossl_quic_demux_release_urxe or + * ossl_quic_demux_reinject_urxe to be called on the URXE at some point in the + * future (this need not be before the callback returns). + * + * At the time the callback is made, the URXE will not be in any queue, + * therefore the callee can use the prev and next fields as it wishes. + */ +typedef void (ossl_quic_demux_cb_fn)(QUIC_URXE *e, void *arg); + +/* + * Called when a datagram is received. + * Returns 1 if the datagram ends with a stateless reset token and + * 0 if not. + */ +typedef int (ossl_quic_stateless_reset_cb_fn)(const unsigned char *data, + size_t data_len, void *arg); + +/* + * Creates a new demuxer. The given BIO is used to receive datagrams from the + * network using BIO_recvmmsg. short_conn_id_len is the length of destination + * connection IDs used in RX'd packets; it must have the same value for all + * connections used on a socket. default_urxe_alloc_len is the buffer size to + * receive datagrams into; it should be a value large enough to contain any + * received datagram according to local MTUs, etc. + * + * now is an optional function used to determine the time a datagram was + * received. now_arg is an opaque argument passed to the function. If now is + * NULL, ossl_time_zero() is used as the datagram reception time. + */ +QUIC_DEMUX *ossl_quic_demux_new(BIO *net_bio, + size_t short_conn_id_len, + OSSL_TIME (*now)(void *arg), + void *now_arg); + +/* + * Destroy a demuxer. All URXEs must have been released back to the demuxer + * before calling this. No-op if demux is NULL. + */ +void ossl_quic_demux_free(QUIC_DEMUX *demux); + +/* + * Changes the BIO which the demuxer reads from. This also sets the MTU if the + * BIO supports querying the MTU. + */ +void ossl_quic_demux_set_bio(QUIC_DEMUX *demux, BIO *net_bio); + +/* + * Changes the MTU in bytes we use to receive datagrams. + */ +int ossl_quic_demux_set_mtu(QUIC_DEMUX *demux, unsigned int mtu); + +/* + * Register a datagram handler callback for a connection ID. + * + * ossl_quic_demux_pump will call the specified function if it receives a datagram + * the first packet of which has the specified destination connection ID. + * + * It is assumed all packets in a datagram have the same destination connection + * ID (as QUIC mandates this), but it is the user's responsibility to check for + * this and reject subsequent packets in a datagram that violate this rule. + * + * dst_conn_id is a destination connection ID; it is copied and need not remain + * valid after this function returns. + * + * cb_arg is passed to cb when it is called. For information on the callback, + * see its typedef above. + * + * Only one handler can be set for a given connection ID. If a handler is + * already set for the given connection ID, returns 0. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_demux_register(QUIC_DEMUX *demux, + const QUIC_CONN_ID *dst_conn_id, + ossl_quic_demux_cb_fn *cb, + void *cb_arg); + +/* + * Unregisters any datagram handler callback set for the given connection ID. + * Fails if no handler is registered for the given connection ID. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_demux_unregister(QUIC_DEMUX *demux, + const QUIC_CONN_ID *dst_conn_id); + +/* + * Unregisters any datagram handler callback from all connection IDs it is used + * for. cb and cb_arg must both match the values passed to + * ossl_quic_demux_register. + */ +void ossl_quic_demux_unregister_by_cb(QUIC_DEMUX *demux, + ossl_quic_demux_cb_fn *cb, + void *cb_arg); + +/* + * Set the default packet handler. This is used for incoming packets which don't + * match a registered DCID. This is only needed for servers. If a default packet + * handler is not set, a packet which doesn't match a registered DCID is + * silently dropped. A default packet handler may be unset by passing NULL. + * + * The handler is responsible for ensuring that ossl_quic_demux_reinject_urxe or + * ossl_quic_demux_release_urxe is called on the passed packet at some point in + * the future, which may or may not be before the handler returns. + */ +void ossl_quic_demux_set_default_handler(QUIC_DEMUX *demux, + ossl_quic_demux_cb_fn *cb, + void *cb_arg); + +/* + * Sets a callback for stateless reset processing. + * + * If set, this callback is called for datagrams for which we cannot identify + * a CID. This function should return 1 if there is a stateless reset token + * present and 0 if not. If there is a token present, the connection should + * also be reset. + */ +void ossl_quic_demux_set_stateless_reset_handler( + QUIC_DEMUX *demux, + ossl_quic_stateless_reset_cb_fn *cb, void *cb_arg); + +/* + * Releases a URXE back to the demuxer. No reference must be made to the URXE or + * its buffer after calling this function. The URXE must not be in any queue; + * that is, its prev and next pointers must be NULL. + */ +void ossl_quic_demux_release_urxe(QUIC_DEMUX *demux, + QUIC_URXE *e); + +/* + * Reinjects a URXE which was issued to a registered DCID callback or the + * default packet handler callback back into the pending queue. This is useful + * when a packet has been handled by the default packet handler callback such + * that a DCID has now been registered and can be dispatched normally by DCID. + * Once this has been called, the caller must not touch the URXE anymore and + * must not also call ossl_quic_demux_release_urxe(). + * + * The URXE is reinjected at the head of the queue, so it will be reprocessed + * immediately. + */ +void ossl_quic_demux_reinject_urxe(QUIC_DEMUX *demux, + QUIC_URXE *e); + +/* + * Process any unprocessed RX'd datagrams, by calling registered callbacks by + * connection ID, reading more datagrams from the BIO if necessary. + * + * Returns one of the following values: + * + * QUIC_DEMUX_PUMP_RES_OK + * At least one incoming datagram was processed. + * + * QUIC_DEMUX_PUMP_RES_TRANSIENT_FAIL + * No more incoming datagrams are currently available. + * Call again later. + * + * QUIC_DEMUX_PUMP_RES_PERMANENT_FAIL + * Either the network read BIO has failed in a non-transient fashion, or + * the QUIC implementation has encountered an internal state, assertion + * or allocation error. The caller should tear down the connection + * similarly to in the case of a protocol violation. + * + */ +#define QUIC_DEMUX_PUMP_RES_OK 1 +#define QUIC_DEMUX_PUMP_RES_TRANSIENT_FAIL (-1) +#define QUIC_DEMUX_PUMP_RES_PERMANENT_FAIL (-2) +#define QUIC_DEMUX_PUMP_RES_STATELESS_RESET (-3) + +int ossl_quic_demux_pump(QUIC_DEMUX *demux); + +/* + * Artificially inject a packet into the demuxer for testing purposes. The + * buffer must not exceed the URXE size being used by the demuxer. + * + * If peer or local are NULL, their respective fields are zeroed in the injected + * URXE. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_demux_inject(QUIC_DEMUX *demux, + const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); + +/* + * Returns 1 if there are any pending URXEs. + */ +int ossl_quic_demux_has_pending(const QUIC_DEMUX *demux); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_error.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_error.h new file mode 100644 index 00000000..ae195a5f --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_error.h @@ -0,0 +1,56 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_ERROR_H +# define OSSL_QUIC_ERROR_H + +# include + +# ifndef OPENSSL_NO_QUIC + +/* RFC 9000 Section 20.1 */ +# define QUIC_ERR_NO_ERROR 0x00 +# define QUIC_ERR_INTERNAL_ERROR 0x01 +# define QUIC_ERR_CONNECTION_REFUSED 0x02 +# define QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +# define QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +# define QUIC_ERR_STREAM_STATE_ERROR 0x05 +# define QUIC_ERR_FINAL_SIZE_ERROR 0x06 +# define QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +# define QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +# define QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +# define QUIC_ERR_PROTOCOL_VIOLATION 0x0A +# define QUIC_ERR_INVALID_TOKEN 0x0B +# define QUIC_ERR_APPLICATION_ERROR 0x0C +# define QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +# define QUIC_ERR_KEY_UPDATE_ERROR 0x0E +# define QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +# define QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +# define QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +# define QUIC_ERR_CRYPTO_ERR_END 0x01FF + +# define QUIC_ERR_CRYPTO_ERR(X) \ + (QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + +# define QUIC_ERR_CRYPTO_UNEXPECTED_MESSAGE \ + QUIC_ERR_CRYPTO_ERR(SSL3_AD_UNEXPECTED_MESSAGE) + +# define QUIC_ERR_CRYPTO_MISSING_EXT \ + QUIC_ERR_CRYPTO_ERR(TLS13_AD_MISSING_EXTENSION) + +# define QUIC_ERR_CRYPTO_NO_APP_PROTO \ + QUIC_ERR_CRYPTO_ERR(TLS1_AD_NO_APPLICATION_PROTOCOL) + +const char *ossl_quic_err_to_string(uint64_t error_code); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fc.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fc.h new file mode 100644 index 00000000..49b448a3 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fc.h @@ -0,0 +1,277 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_FC_H +# define OSSL_QUIC_FC_H + +# include +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * TX Flow Controller (TXFC) + * ========================= + * + * For discussion, see doc/designs/quic-design/quic-fc.md. + */ +typedef struct quic_txfc_st QUIC_TXFC; + +struct quic_txfc_st { + QUIC_TXFC *parent; /* stream-level iff non-NULL */ + uint64_t swm, cwm; + char has_become_blocked; +}; + +/* + * Initialises a TX flow controller. conn_txfc should be non-NULL and point to + * the connection-level flow controller if the TXFC is for stream-level flow + * control, and NULL otherwise. + */ +int ossl_quic_txfc_init(QUIC_TXFC *txfc, QUIC_TXFC *conn_txfc); + +/* + * Gets the parent (i.e., connection-level) TX flow controller. Returns NULL if + * called on a connection-level TX flow controller. + */ +QUIC_TXFC *ossl_quic_txfc_get_parent(QUIC_TXFC *txfc); + +/* + * Bump the credit watermark (CWM) value. This is the 'On TX Window Updated' + * operation. This function is a no-op if it has already been called with an + * equal or higher CWM value. + * + * It returns 1 iff the call resulted in the CWM being bumped and 0 if it was + * not increased because it has already been called with an equal or higher CWM + * value. This is not an error per se but may indicate a local programming error + * or a protocol error in a remote peer. + */ +int ossl_quic_txfc_bump_cwm(QUIC_TXFC *txfc, uint64_t cwm); + +/* + * Get the number of bytes by which we are in credit. This is the number of + * controlled bytes we are allowed to send. (Thus if this function returns 0, we + * are currently blocked.) + * + * If called on a stream-level TXFC, ossl_quic_txfc_get_credit is called on + * the connection-level TXFC as well, and the lesser of the two values is + * returned. The consumed value is the amount already consumed on the connection + * level TXFC. + */ +uint64_t ossl_quic_txfc_get_credit(QUIC_TXFC *txfc, uint64_t consumed); + +/* + * Like ossl_quic_txfc_get_credit(), but when called on a stream-level TXFC, + * retrieves only the stream-level credit value and does not clamp it based on + * connection-level flow control. Any credit value is reduced by the consumed + * amount. + */ +uint64_t ossl_quic_txfc_get_credit_local(QUIC_TXFC *txfc, uint64_t consumed); + +/* + * Consume num_bytes of credit. This is the 'On TX' operation. This should be + * called when we transmit any controlled bytes. Calling this with an argument + * of 0 is a no-op. + * + * We must never transmit more controlled bytes than we are in credit for (see + * the return value of ossl_quic_txfc_get_credit()). If you call this function + * with num_bytes greater than our current credit, this function consumes the + * remainder of the credit and returns 0. This indicates a serious programming + * error on the caller's part. Otherwise, the function returns 1. + * + * If called on a stream-level TXFC, ossl_quic_txfc_consume_credit() is called + * on the connection-level TXFC also. If the call to that function on the + * connection-level TXFC returns zero, this function will also return zero. + */ +int ossl_quic_txfc_consume_credit(QUIC_TXFC *txfc, uint64_t num_bytes); + +/* + * Like ossl_quic_txfc_consume_credit(), but when called on a stream-level TXFC, + * consumes only from the stream-level credit and does not inform the + * connection-level TXFC. + */ +int ossl_quic_txfc_consume_credit_local(QUIC_TXFC *txfc, uint64_t num_bytes); + +/* + * This flag is provided for convenience. A caller is not required to use it. It + * is a boolean flag set whenever our credit drops to zero. If clear is 1, the + * flag is cleared. The old value of the flag is returned. Callers may use this + * to determine if they need to send a DATA_BLOCKED or STREAM_DATA_BLOCKED + * frame, which should contain the value returned by ossl_quic_txfc_get_cwm(). + */ +int ossl_quic_txfc_has_become_blocked(QUIC_TXFC *txfc, int clear); + +/* + * Get the current CWM value. This is mainly only needed when generating a + * DATA_BLOCKED or STREAM_DATA_BLOCKED frame, or for diagnostic purposes. + */ +uint64_t ossl_quic_txfc_get_cwm(QUIC_TXFC *txfc); + +/* + * Get the current spent watermark (SWM) value. This is purely for diagnostic + * use and should not be needed in normal circumstances. + */ +uint64_t ossl_quic_txfc_get_swm(QUIC_TXFC *txfc); + +/* + * RX Flow Controller (RXFC) + * ========================= + */ +typedef struct quic_rxfc_st QUIC_RXFC; + +struct quic_rxfc_st { + /* + * swm is the sent/received watermark, which tracks how much we have + * received from the peer. rwm is the retired watermark, which tracks how + * much has been passed to the application. esrwm is the rwm value at which + * the current auto-tuning epoch started. hwm is the highest stream length + * (STREAM frame offset + payload length) we have seen from a STREAM frame + * yet. + */ + uint64_t cwm, swm, rwm, esrwm, hwm, cur_window_size, max_window_size; + OSSL_TIME epoch_start; + OSSL_TIME (*now)(void *arg); + void *now_arg; + QUIC_RXFC *parent; + unsigned char error_code, has_cwm_changed, is_fin, standalone; +}; + +/* + * Initialises an RX flow controller. conn_rxfc should be non-NULL and point to + * a connection-level RXFC if the RXFC is for stream-level flow control, and + * NULL otherwise. initial_window_size and max_window_size specify the initial + * and absolute maximum window sizes, respectively. Window size values are + * expressed in bytes and determine how much credit the RXFC extends to the peer + * to transmit more data at a time. + */ +int ossl_quic_rxfc_init(QUIC_RXFC *rxfc, QUIC_RXFC *conn_rxfc, + uint64_t initial_window_size, + uint64_t max_window_size, + OSSL_TIME (*now)(void *arg), + void *now_arg); + +/* + * Initialises an RX flow controller which is used by itself and not under a + * connection-level RX flow controller. This can be used for stream count + * enforcement as well as CRYPTO buffer enforcement. + */ +int ossl_quic_rxfc_init_standalone(QUIC_RXFC *rxfc, + uint64_t initial_window_size, + OSSL_TIME (*now)(void *arg), + void *now_arg); + +/* + * Gets the parent (i.e., connection-level) RXFC. Returns NULL if called on a + * connection-level RXFC. + */ +QUIC_RXFC *ossl_quic_rxfc_get_parent(QUIC_RXFC *rxfc); + +/* + * Changes the current maximum window size value. + */ +void ossl_quic_rxfc_set_max_window_size(QUIC_RXFC *rxfc, + size_t max_window_size); + +/* + * To be called whenever a STREAM frame is received. + * + * end is the value (offset + len), where offset is the offset field of the + * STREAM frame and len is the length of the STREAM frame's payload in bytes. + * + * is_fin should be 1 if the STREAM frame had the FIN flag set and 0 otherwise. + * + * This function may be used on a stream-level RXFC only. The connection-level + * RXFC will have its state updated by the stream-level RXFC. + * + * You should check ossl_quic_rxfc_has_error() on both connection-level and + * stream-level RXFCs after calling this function, as an incoming STREAM frame + * may cause flow control limits to be exceeded by an errant peer. This + * function still returns 1 in this case, as this is not a caller error. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_rxfc_on_rx_stream_frame(QUIC_RXFC *rxfc, + uint64_t end, int is_fin); + +/* + * To be called whenever controlled bytes are retired, i.e. when bytes are + * dequeued from a QUIC stream and passed to the application. num_bytes + * is the number of bytes which were passed to the application. + * + * You should call this only on a stream-level RXFC. This function will update + * the connection-level RXFC automatically. + * + * rtt should be the current best understanding of the RTT to the peer, as + * offered by the Statistics Manager. + * + * You should check ossl_quic_rxfc_has_cwm_changed() after calling this + * function, as it may have caused the RXFC to decide to grant more flow control + * credit to the peer. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_rxfc_on_retire(QUIC_RXFC *rxfc, + uint64_t num_bytes, + OSSL_TIME rtt); + +/* + * Returns the current CWM which the RXFC thinks the peer should have. + * + * Note that the RXFC will increase this value in response to events, at which + * time a MAX_DATA or MAX_STREAM_DATA frame must be generated. Use + * ossl_quic_rxfc_has_cwm_changed() to detect this condition. + * + * This value increases monotonically. + */ +uint64_t ossl_quic_rxfc_get_cwm(QUIC_RXFC *rxfc); + +/* + * Returns the current SWM. This is the total number of bytes the peer has + * transmitted to us. This is intended for diagnostic use only; you should + * not need it. + */ +uint64_t ossl_quic_rxfc_get_swm(QUIC_RXFC *rxfc); + +/* + * Returns the current RWM. This is the total number of bytes that has been + * retired. This is intended for diagnostic use only; you should not need it. + */ +uint64_t ossl_quic_rxfc_get_rwm(QUIC_RXFC *rxfc); + +/* + * Returns the CWM changed flag. If clear is 1, the flag is cleared and the old + * value is returned. + */ +int ossl_quic_rxfc_has_cwm_changed(QUIC_RXFC *rxfc, int clear); + +/* + * Returns a QUIC_ERR_* error code if a flow control error has been detected. + * Otherwise, returns QUIC_ERR_NO_ERROR. If clear is 1, the error is cleared + * and the old value is returned. + * + * May return one of the following values: + * + * QUIC_ERR_FLOW_CONTROL_ERROR: + * This indicates a flow control protocol violation by the remote peer; the + * connection should be terminated in this event. + * QUIC_ERR_FINAL_SIZE: + * The peer attempted to change the stream length after ending the stream. + */ +int ossl_quic_rxfc_get_error(QUIC_RXFC *rxfc, int clear); + +/* + * Returns 1 if the RXFC is a stream-level RXFC and the RXFC knows the final + * size for the stream in bytes. If this is the case and final_size is non-NULL, + * writes the final size to *final_size. Otherwise, returns 0. + */ +int ossl_quic_rxfc_get_final_size(const QUIC_RXFC *rxfc, uint64_t *final_size); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fifd.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fifd.h new file mode 100644 index 00000000..a260ec44 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_fifd.h @@ -0,0 +1,80 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_FIFD_H +# define OSSL_QUIC_FIFD_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_cfq.h" +# include "internal/quic_ackm.h" +# include "internal/quic_txpim.h" +# include "internal/quic_stream.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Frame-in-Flight Dispatcher (FIFD) + * ====================================== + */ +struct quic_fifd_st { + /* Internal data; use the ossl_quic_fifd functions. */ + QUIC_CFQ *cfq; + OSSL_ACKM *ackm; + QUIC_TXPIM *txpim; + QUIC_SSTREAM *(*get_sstream_by_id)(uint64_t stream_id, + uint32_t pn_space, + void *arg); + void *get_sstream_by_id_arg; + void (*regen_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg); + void *regen_frame_arg; + void (*confirm_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg); + void *confirm_frame_arg; + void (*sstream_updated)(uint64_t stream_id, + void *arg); + void *sstream_updated_arg; +}; + +int ossl_quic_fifd_init(QUIC_FIFD *fifd, + QUIC_CFQ *cfq, + OSSL_ACKM *ackm, + QUIC_TXPIM *txpim, + /* stream_id is UINT64_MAX for the crypto stream */ + QUIC_SSTREAM *(*get_sstream_by_id)(uint64_t stream_id, + uint32_t pn_space, + void *arg), + void *get_sstream_by_id_arg, + /* stream_id is UINT64_MAX if not applicable */ + void (*regen_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg), + void *regen_frame_arg, + void (*confirm_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg), + void *confirm_frame_arg, + void (*sstream_updated)(uint64_t stream_id, + void *arg), + void *sstream_updated_arg); + +void ossl_quic_fifd_cleanup(QUIC_FIFD *fifd); /* (no-op) */ + +int ossl_quic_fifd_pkt_commit(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *pkt); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_reactor.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_reactor.h new file mode 100644 index 00000000..57bb551e --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_reactor.h @@ -0,0 +1,188 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_QUIC_REACTOR_H +# define OSSL_QUIC_REACTOR_H + +# include "internal/time.h" +# include "internal/sockets.h" +# include + +# ifndef OPENSSL_NO_QUIC + +/* + * Core I/O Reactor Framework + * ========================== + * + * Manages use of async network I/O which the QUIC stack is built on. The core + * mechanic looks like this: + * + * - There is a pollable FD for both the read and write side respectively. + * Readability and writeability of these FDs respectively determines when + * network I/O is available. + * + * - The reactor can export these FDs to the user, as well as flags indicating + * whether the user should listen for readability, writeability, or neither. + * + * - The reactor can export a timeout indication to the user, indicating when + * the reactor should be called (via libssl APIs) regardless of whether + * the network socket has become ready. + * + * The reactor is based around a tick callback which is essentially the mutator + * function. The mutator attempts to do whatever it can, attempting to perform + * network I/O to the extent currently feasible. When done, the mutator returns + * information to the reactor indicating when it should be woken up again: + * + * - Should it be woken up when network RX is possible? + * - Should it be woken up when network TX is possible? + * - Should it be woken up no later than some deadline X? + * + * The intention is that ALL I/O-related SSL_* functions with side effects (e.g. + * SSL_read/SSL_write) consist of three phases: + * + * - Optionally mutate the QUIC machine's state. + * - Optionally tick the QUIC reactor. + * - Optionally mutate the QUIC machine's state. + * + * For example, SSL_write is a mutation (appending to a stream buffer) followed + * by an optional tick (generally expected as we may want to send the data + * immediately, though not strictly needed if transmission is being deferred due + * to Nagle's algorithm, etc.). + * + * SSL_read is also a mutation and in principle does not need to tick the + * reactor, but it generally will anyway to ensure that the reactor is regularly + * ticked by an application which is only reading and not writing. + * + * If the SSL object is being used in blocking mode, SSL_read may need to block + * if no data is available yet, and SSL_write may need to block if buffers + * are full. + * + * The internals of the QUIC I/O engine always use asynchronous I/O. If the + * application desires blocking semantics, we handle this by adding a blocking + * adaptation layer on top of our internal asynchronous I/O API as exposed by + * the reactor interface. + */ +typedef struct quic_tick_result_st { + char net_read_desired; + char net_write_desired; + OSSL_TIME tick_deadline; +} QUIC_TICK_RESULT; + +typedef struct quic_reactor_st { + /* + * BIO poll descriptors which can be polled. poll_r is a poll descriptor + * which becomes readable when the QUIC state machine can potentially do + * work, and poll_w is a poll descriptor which becomes writable when the + * QUIC state machine can potentially do work. Generally, either of these + * conditions means that SSL_tick() should be called, or another SSL + * function which implicitly calls SSL_tick() (e.g. SSL_read/SSL_write()). + */ + BIO_POLL_DESCRIPTOR poll_r, poll_w; + OSSL_TIME tick_deadline; /* ossl_time_infinite() if none currently applicable */ + + void (*tick_cb)(QUIC_TICK_RESULT *res, void *arg, uint32_t flags); + void *tick_cb_arg; + + /* + * These are true if we would like to know when we can read or write from + * the network respectively. + */ + unsigned int net_read_desired : 1; + unsigned int net_write_desired : 1; + + /* + * Are the read and write poll descriptors we are currently configured with + * things we can actually poll? + */ + unsigned int can_poll_r : 1; + unsigned int can_poll_w : 1; +} QUIC_REACTOR; + +void ossl_quic_reactor_init(QUIC_REACTOR *rtor, + void (*tick_cb)(QUIC_TICK_RESULT *res, void *arg, + uint32_t flags), + void *tick_cb_arg, + OSSL_TIME initial_tick_deadline); + +void ossl_quic_reactor_set_poll_r(QUIC_REACTOR *rtor, + const BIO_POLL_DESCRIPTOR *r); + +void ossl_quic_reactor_set_poll_w(QUIC_REACTOR *rtor, + const BIO_POLL_DESCRIPTOR *w); + +const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_r(const QUIC_REACTOR *rtor); +const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_w(const QUIC_REACTOR *rtor); + +int ossl_quic_reactor_can_poll_r(const QUIC_REACTOR *rtor); +int ossl_quic_reactor_can_poll_w(const QUIC_REACTOR *rtor); + +int ossl_quic_reactor_can_support_poll_descriptor(const QUIC_REACTOR *rtor, + const BIO_POLL_DESCRIPTOR *d); + +int ossl_quic_reactor_net_read_desired(QUIC_REACTOR *rtor); +int ossl_quic_reactor_net_write_desired(QUIC_REACTOR *rtor); + +OSSL_TIME ossl_quic_reactor_get_tick_deadline(QUIC_REACTOR *rtor); + +/* + * Do whatever work can be done, and as much work as can be done. This involves + * e.g. seeing if we can read anything from the network (if we want to), seeing + * if we can write anything to the network (if we want to), etc. + * + * If the CHANNEL_ONLY flag is set, this indicates that we should only + * touch state which is synchronised by the channel mutex. + */ +#define QUIC_REACTOR_TICK_FLAG_CHANNEL_ONLY (1U << 0) + +int ossl_quic_reactor_tick(QUIC_REACTOR *rtor, uint32_t flags); + +/* + * Blocking I/O Adaptation Layer + * ============================= + * + * The blocking I/O adaptation layer implements blocking I/O on top of our + * asynchronous core. + * + * The core mechanism is block_until_pred(), which does not return until pred() + * returns a value other than 0. The blocker uses OS I/O synchronisation + * primitives (e.g. poll(2)) and ticks the reactor until the predicate is + * satisfied. The blocker is not required to call pred() more than once between + * tick calls. + * + * When pred returns a non-zero value, that value is returned by this function. + * This can be used to allow pred() to indicate error conditions and short + * circuit the blocking process. + * + * A return value of -1 is reserved for network polling errors. Therefore this + * return value should not be used by pred() if ambiguity is not desired. Note + * that the predicate function can always arrange its own output mechanism, for + * example by passing a structure of its own as the argument. + * + * If the SKIP_FIRST_TICK flag is set, the first call to reactor_tick() before + * the first call to pred() is skipped. This is useful if it is known that + * ticking the reactor again will not be useful (e.g. because it has already + * been done). + * + * This function assumes a write lock is held for the entire QUIC_CHANNEL. If + * mutex is non-NULL, it must be a lock currently held for write; it will be + * unlocked during any sleep, and then relocked for write afterwards. + * + * Precondition: mutex is NULL or is held for write (unchecked) + * Postcondition: mutex is NULL or is held for write (unless + * CRYPTO_THREAD_write_lock fails) + */ +#define SKIP_FIRST_TICK (1U << 0) + +int ossl_quic_reactor_block_until_pred(QUIC_REACTOR *rtor, + int (*pred)(void *arg), void *pred_arg, + uint32_t flags, + CRYPTO_RWLOCK *mutex); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_rx.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_rx.h new file mode 100644 index 00000000..e26fd356 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_rx.h @@ -0,0 +1,569 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RECORD_RX_H +# define OSSL_QUIC_RECORD_RX_H + +# include +# include "internal/quic_wire_pkt.h" +# include "internal/quic_types.h" +# include "internal/quic_record_util.h" +# include "internal/quic_demux.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Record Layer - RX + * ====================== + */ +typedef struct ossl_qrx_st OSSL_QRX; + +typedef struct ossl_qrx_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + + /* Demux to receive datagrams from. */ + QUIC_DEMUX *demux; + + /* Length of connection IDs used in short-header packets in bytes. */ + size_t short_conn_id_len; + + /* + * Maximum number of deferred datagrams buffered at any one time. + * Suggested value: 32. + */ + size_t max_deferred; + + /* Initial reference PN used for RX. */ + QUIC_PN init_largest_pn[QUIC_PN_SPACE_NUM]; + + /* Initial key phase. For debugging use only; always 0 in real use. */ + unsigned char init_key_phase_bit; +} OSSL_QRX_ARGS; + +/* Instantiates a new QRX. */ +OSSL_QRX *ossl_qrx_new(const OSSL_QRX_ARGS *args); + +/* + * Frees the QRX. All packets obtained using ossl_qrx_read_pkt must already + * have been released by calling ossl_qrx_release_pkt. + * + * You do not need to call ossl_qrx_remove_dst_conn_id first; this function will + * unregister the QRX from the demuxer for all registered destination connection + * IDs (DCIDs) automatically. + */ +void ossl_qrx_free(OSSL_QRX *qrx); + +/* Setters for the msg_callback and msg_callback_arg */ +void ossl_qrx_set_msg_callback(OSSL_QRX *qrx, ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_qrx_set_msg_callback_arg(OSSL_QRX *qrx, + void *msg_callback_arg); + +/* + * DCID Management + * =============== + */ + +/* + * Adds a given DCID to the QRX. The QRX will register the DCID with the demuxer + * so that incoming packets with that DCID are passed to the given QRX. Multiple + * DCIDs may be associated with a QRX at any one time. You will need to add at + * least one DCID after instantiating the QRX. A zero-length DCID is a valid + * input to this function. This function fails if the DCID is already + * registered. + * + * Returns 1 on success or 0 on error. + */ +int ossl_qrx_add_dst_conn_id(OSSL_QRX *qrx, + const QUIC_CONN_ID *dst_conn_id); + +/* + * Remove a DCID previously registered with ossl_qrx_add_dst_conn_id. The DCID + * is unregistered from the demuxer. Fails if the DCID is not registered with + * the demuxer. + * + * Returns 1 on success or 0 on error. + */ +int ossl_qrx_remove_dst_conn_id(OSSL_QRX *qrx, + const QUIC_CONN_ID *dst_conn_id); + +/* + * Secret Management + * ================= + * + * A QRX has several encryption levels (Initial, Handshake, 0-RTT, 1-RTT) and + * two directions (RX, TX). At any given time, key material is managed for each + * (EL, RX/TX) combination. + * + * Broadly, for a given (EL, RX/TX), the following state machine is applicable: + * + * WAITING_FOR_KEYS --[Provide]--> HAVE_KEYS --[Discard]--> | DISCARDED | + * \-------------------------------------[Discard]--> | | + * + * To transition the RX side of an EL from WAITING_FOR_KEYS to HAVE_KEYS, call + * ossl_qrx_provide_secret (for the INITIAL EL, use of + * ossl_quic_provide_initial_secret is recommended). + * + * Once keys have been provisioned for an EL, you call + * ossl_qrx_discard_enc_level to transition the EL to the DISCARDED state. You + * can also call this function to transition directly to the DISCARDED state + * even before any keys have been provisioned for that EL. + * + * The DISCARDED state is terminal for a given EL; you cannot provide a secret + * again for that EL after reaching it. + * + * Incoming packets cannot be processed and decrypted if they target an EL + * not in the HAVE_KEYS state. However, there is a distinction between + * the WAITING_FOR_KEYS and DISCARDED states: + * + * - In the WAITING_FOR_KEYS state, the QRX assumes keys for the given + * EL will eventually arrive. Therefore, if it receives any packet + * for an EL in this state, it buffers it and tries to process it + * again once the EL reaches HAVE_KEYS. + * + * - In the DISCARDED state, the QRX assumes no keys for the given + * EL will ever arrive again. If it receives any packet for an EL + * in this state, it is simply discarded. + * + * If the user wishes to instantiate a new QRX to replace an old one for + * whatever reason, for example to take over for an already established QUIC + * connection, it is important that all ELs no longer being used (i.e., INITIAL, + * 0-RTT, 1-RTT) are transitioned to the DISCARDED state. Otherwise, the QRX + * will assume that keys for these ELs will arrive in future, and will buffer + * any received packets for those ELs perpetually. This can be done by calling + * ossl_qrx_discard_enc_level for all non-1-RTT ELs immediately after + * instantiating the QRX. + * + * The INITIAL EL is not setup automatically when the QRX is instantiated. This + * allows the caller to instead discard it immediately after instantiation of + * the QRX if it is not needed, for example if the QRX is being instantiated to + * take over handling of an existing connection which has already passed the + * INITIAL phase. This avoids the unnecessary derivation of INITIAL keys where + * they are not needed. In the ordinary case, ossl_quic_provide_initial_secret + * should be called immediately after instantiation. + */ + +/* + * Provides a secret to the QRX, which arises due to an encryption level change. + * enc_level is a QUIC_ENC_LEVEL_* value. To initialise the INITIAL encryption + * level, it is recommended to use ossl_quic_provide_initial_secret instead. + * + * You should seek to call this function for a given EL before packets of that + * EL arrive and are processed by the QRX. However, if packets have already + * arrived for a given EL, the QRX will defer processing of them and perform + * processing of them when this function is eventually called for the EL in + * question. + * + * suite_id is a QRL_SUITE_* value which determines the AEAD function used for + * the QRX. + * + * The secret passed is used directly to derive the "quic key", "quic iv" and + * "quic hp" values. + * + * secret_len is the length of the secret buffer in bytes. The buffer must be + * sized correctly to the chosen suite, else the function fails. + * + * This function can only be called once for a given EL, except for the INITIAL + * EL, which can need rekeying when a connection retry occurs. Subsequent calls + * for non-INITIAL ELs fail, as do calls made after a corresponding call to + * ossl_qrx_discard_enc_level for that EL. The secret for a non-INITIAL EL + * cannot be changed after it is set because QUIC has no facility for + * introducing additional key material after an EL is setup. QUIC key updates + * are managed semi-automatically by the QRX but do require some caller handling + * (see below). + * + * md is for internal use and should be NULL. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_qrx_provide_secret(OSSL_QRX *qrx, + uint32_t enc_level, + uint32_t suite_id, + EVP_MD *md, + const unsigned char *secret, + size_t secret_len); + +/* + * Informs the QRX that it can now discard key material for a given EL. The QRX + * will no longer be able to process incoming packets received at that + * encryption level. This function is idempotent and succeeds if the EL has + * already been discarded. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_qrx_discard_enc_level(OSSL_QRX *qrx, uint32_t enc_level); + +/* + * Packet Reception + * ================ + */ + +/* Information about a received packet. */ +typedef struct ossl_qrx_pkt_st { + /* + * Points to a logical representation of the decoded QUIC packet header. The + * data and len fields point to the decrypted QUIC payload (i.e., to a + * sequence of zero or more (potentially malformed) frames to be decoded). + */ + QUIC_PKT_HDR *hdr; + + /* + * Address the packet was received from. If this is not available for this + * packet, this field is NULL (but this can only occur for manually injected + * packets). + */ + const BIO_ADDR *peer; + + /* + * Local address the packet was sent to. If this is not available for this + * packet, this field is NULL. + */ + const BIO_ADDR *local; + + /* + * This is the length of the datagram which contained this packet. Note that + * the datagram may have contained other packets than this. The intended use + * for this is so that the user can enforce minimum datagram sizes (e.g. for + * datagrams containing INITIAL packets), as required by RFC 9000. + */ + size_t datagram_len; + + /* The PN which was decoded for the packet, if the packet has a PN field. */ + QUIC_PN pn; + + /* + * Time the packet was received, or ossl_time_zero() if the demuxer is not + * using a now() function. + */ + OSSL_TIME time; + + /* The QRX which was used to receive the packet. */ + OSSL_QRX *qrx; + + /* + * The key epoch the packet was received with. Always 0 for non-1-RTT + * packets. + */ + uint64_t key_epoch; +} OSSL_QRX_PKT; + +/* + * Tries to read a new decrypted packet from the QRX. + * + * On success, *pkt points to a OSSL_QRX_PKT structure. The structure should be + * freed when no longer needed by calling ossl_qrx_pkt_release(). The structure + * is refcounted; to gain extra references, call ossl_qrx_pkt_up_ref(). This + * will cause a corresponding number of calls to ossl_qrx_pkt_release() to be + * ignored. + * + * The resources referenced by (*pkt)->hdr, (*pkt)->hdr->data and (*pkt)->peer + * have the same lifetime as *pkt. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_qrx_read_pkt(OSSL_QRX *qrx, OSSL_QRX_PKT **pkt); + +/* + * Decrement the reference count for the given packet and frees it if the + * reference count drops to zero. No-op if pkt is NULL. + */ +void ossl_qrx_pkt_release(OSSL_QRX_PKT *pkt); + +/* Increments the reference count for the given packet. */ +void ossl_qrx_pkt_up_ref(OSSL_QRX_PKT *pkt); + +/* + * Returns 1 if there are any already processed (i.e. decrypted) packets waiting + * to be read from the QRX. + */ +int ossl_qrx_processed_read_pending(OSSL_QRX *qrx); + +/* + * Returns 1 if there are any unprocessed (i.e. not yet decrypted) packets + * waiting to be processed by the QRX. These may or may not result in + * successfully decrypted packets once processed. This indicates whether + * unprocessed data is buffered by the QRX, not whether any data is available in + * a kernel socket buffer. + */ +int ossl_qrx_unprocessed_read_pending(OSSL_QRX *qrx); + +/* + * Returns the number of UDP payload bytes received from the network so far + * since the last time this counter was cleared. If clear is 1, clears the + * counter and returns the old value. + * + * The intended use of this is to allow callers to determine how much credit to + * add to their anti-amplification budgets. This is reported separately instead + * of in the OSSL_QRX_PKT structure so that a caller can apply + * anti-amplification credit as soon as a datagram is received, before it has + * necessarily read all processed packets contained within that datagram from + * the QRX. + */ +uint64_t ossl_qrx_get_bytes_received(OSSL_QRX *qrx, int clear); + +/* + * Sets a callback which is called when a packet is received and being validated + * before being queued in the read queue. This is called after packet body + * decryption and authentication to prevent exposing side channels. pn_space is + * a QUIC_PN_SPACE_* value denoting which PN space the PN belongs to. + * + * If this callback returns 1, processing continues normally. + * If this callback returns 0, the packet is discarded. + * + * Other packets in the same datagram will still be processed where possible. + * + * The callback is optional and can be unset by passing NULL for cb. + * cb_arg is an opaque value passed to cb. + */ +typedef int (ossl_qrx_late_validation_cb)(QUIC_PN pn, int pn_space, + void *arg); + +int ossl_qrx_set_late_validation_cb(OSSL_QRX *qrx, + ossl_qrx_late_validation_cb *cb, + void *cb_arg); + +/* + * Forcibly injects a URXE which has been issued by the DEMUX into the QRX for + * processing. This can be used to pass a received datagram to the QRX if it + * would not be correctly routed to the QRX via standard DCID-based routing; for + * example, when handling an incoming Initial packet which is attempting to + * establish a new connection. + */ +void ossl_qrx_inject_urxe(OSSL_QRX *qrx, QUIC_URXE *e); + +/* + * Decryption of 1-RTT packets must be explicitly enabled by calling this + * function. This is to comply with the requirement that we not process 1-RTT + * packets until the handshake is complete, even if we already have 1-RTT + * secrets. Even if a 1-RTT secret is provisioned for the QRX, incoming 1-RTT + * packets will be handled as though no key is available until this function is + * called. Calling this function will then requeue any such deferred packets for + * processing. + */ +void ossl_qrx_allow_1rtt_processing(OSSL_QRX *qrx); + +/* + * Key Update (RX) + * =============== + * + * Key update on the RX side is a largely but not entirely automatic process. + * + * Key update is initially triggered by receiving a 1-RTT packet with a + * different Key Phase value. This could be caused by an attacker in the network + * flipping random bits, therefore such a key update is tentative until the + * packet payload is successfully decrypted and authenticated by the AEAD with + * the 'next' keys. These 'next' keys then become the 'current' keys and the + * 'current' keys then become the 'previous' keys. The 'previous' keys must be + * kept around temporarily as some packets may still be in flight in the network + * encrypted with the old keys. If the old Key Phase value is X and the new Key + * Phase Value is Y (where obviously X != Y), this creates an ambiguity as any + * new packet received with a KP of X could either be an attempt to initiate yet + * another key update right after the last one, or an old packet encrypted + * before the key update. + * + * RFC 9001 provides some guidance on handling this issue: + * + * Strategy 1: + * Three keys, disambiguation using packet numbers + * + * "A recovered PN that is lower than any PN from the current KP uses the + * previous packet protection keys; a recovered PN that is higher than any + * PN from the current KP requires use of the next packet protection + * keys." + * + * Strategy 2: + * Two keys and a timer + * + * "Alternatively, endpoints can retain only two sets of packet protection + * keys, swapping previous keys for next after enough time has passed to + * allow for reordering in the network. In this case, the KP bit alone can + * be used to select keys." + * + * Strategy 2 is more efficient (we can keep fewer cipher contexts around) and + * should cover all actually possible network conditions. It also allows a delay + * after we make the 'next' keys our 'current' keys before we generate new + * 'next' keys, which allows us to mitigate against malicious peers who try to + * initiate an excessive number of key updates. + * + * We therefore model the following state machine: + * + * + * PROVISIONED + * _______________________________ + * | | + * UNPROVISIONED --|----> NORMAL <----------\ |------> DISCARDED + * | | | | + * | | | | + * | v | | + * | UPDATING | | + * | | | | + * | | | | + * | v | | + * | COOLDOWN | | + * | | | | + * | | | | + * | \---------------| | + * |_______________________________| + * + * + * The RX starts (once a secret has been provisioned) in the NORMAL state. In + * the NORMAL state, the current expected value of the Key Phase bit is + * recorded. When a flipped Key Phase bit is detected, the RX attempts to + * decrypt and authenticate the received packet with the 'next' keys rather than + * the 'current' keys. If (and only if) this authentication is successful, we + * move to the UPDATING state. (An attacker in the network could flip + * the Key Phase bit randomly, so it is essential we do nothing until AEAD + * authentication is complete.) + * + * In the UPDATING state, we know a key update is occurring and record + * the new Key Phase bit value as the newly current value, but we still keep the + * old keys around so that we can still process any packets which were still in + * flight when the key update was initiated. In the UPDATING state, a + * Key Phase bit value different to the current expected value is treated not as + * the initiation of another key update, but a reference to our old keys. + * + * Eventually we will be reasonably sure we are not going to receive any more + * packets with the old keys. At this point, we can transition to the COOLDOWN + * state. This transition occurs automatically after a certain amount of time; + * RFC 9001 recommends it be the PTO interval, which relates to our RTT to the + * peer. The duration also SHOULD NOT exceed three times the PTO to assist with + * maintaining PFS. + * + * In the COOLDOWN phase, the old keys have been securely erased and only one + * set of keys can be used: the current keys. If a packet is received with a Key + * Phase bit value different to the current Key Phase Bit value, this is treated + * as a request for a Key Update, but this request is ignored and the packet is + * treated as malformed. We do this to allow mitigation against malicious peers + * trying to initiate an excessive number of Key Updates. The timeout for the + * transition from UPDATING to COOLDOWN is recommended as adequate for + * this purpose in itself by the RFC, so the normal additional timeout value for + * the transition from COOLDOWN to normal is zero (immediate transition). + * + * A summary of each state: + * + * Epoch Exp KP Uses Keys KS0 KS1 If Non-Expected KP Bit + * ----- ------ --------- ------ ----- ---------------------- + * NORMAL 0 0 Keyset 0 Gen 0 Gen 1 → UPDATING + * UPDATING 1 1 Keyset 1 Gen 0 Gen 1 Use Keyset 0 + * COOLDOWN 1 1 Keyset 1 Erased Gen 1 Ignore Packet (*) + * + * NORMAL 1 1 Keyset 1 Gen 2 Gen 1 → UPDATING + * UPDATING 2 0 Keyset 0 Gen 2 Gen 1 Use Keyset 1 + * COOLDOWN 2 0 Keyset 0 Gen 2 Erased Ignore Packet (*) + * + * (*) Actually implemented by attempting to decrypt the packet with the + * wrong keys (which ultimately has the same outcome), as recommended + * by RFC 9001 to avoid creating timing channels. + * + * Note that the key material for the next key generation ("key epoch") is + * always kept in the NORMAL state (necessary to avoid side-channel attacks). + * This material is derived during the transition from COOLDOWN to NORMAL. + * + * Note that when a peer initiates a Key Update, we MUST also initiate a Key + * Update as per the RFC. The caller is responsible for detecting this condition + * and making the necessary calls to the TX side by detecting changes to the + * return value of ossl_qrx_get_key_epoch(). + * + * The above states (NORMAL, UPDATING, COOLDOWN) can themselves be + * considered substates of the PROVISIONED state. Providing a secret to the QRX + * for an EL transitions from UNPROVISIONED, the initial state, to PROVISIONED + * (NORMAL). Dropping key material for an EL transitions from whatever the + * current substate of the PROVISIONED state is to the DISCARDED state, which is + * the terminal state. + * + * Note that non-1RTT ELs cannot undergo key update, therefore a non-1RTT EL is + * always in the NORMAL substate if it is in the PROVISIONED state. + */ + +/* + * Return the current RX key epoch for the 1-RTT encryption level. This is + * initially zero and is incremented by one for every Key Update successfully + * signalled by the peer. If the 1-RTT EL has not yet been provisioned or has + * been discarded, returns UINT64_MAX. + * + * A necessary implication of this API is that the least significant bit of the + * returned value corresponds to the currently expected Key Phase bit, though + * callers are not anticipated to have any need of this information. + * + * It is not possible for the returned value to overflow, as a QUIC connection + * cannot support more than 2**62 packet numbers, and a connection must be + * terminated if this limit is reached. + * + * The caller should use this function to detect when the key epoch has changed + * and use it to initiate a key update on the TX side. + * + * The value returned by this function increments specifically at the transition + * from the NORMAL to the UPDATING state discussed above. + */ +uint64_t ossl_qrx_get_key_epoch(OSSL_QRX *qrx); + +/* + * Sets an optional callback which will be called when the key epoch changes. + * + * The callback is optional and can be unset by passing NULL for cb. + * cb_arg is an opaque value passed to cb. pn is the PN of the packet. + * Since key update is only supported for 1-RTT packets, the PN is always + * in the Application Data PN space. +*/ +typedef void (ossl_qrx_key_update_cb)(QUIC_PN pn, void *arg); + +int ossl_qrx_set_key_update_cb(OSSL_QRX *qrx, + ossl_qrx_key_update_cb *cb, void *cb_arg); + +/* + * Relates to the 1-RTT encryption level. The caller should call this after the + * UPDATING state is reached, after a timeout to be determined by the caller. + * + * This transitions from the UPDATING state to the COOLDOWN state (if + * still in the UPDATING state). If normal is 1, then transitions from + * the COOLDOWN state to the NORMAL state. Both transitions can be performed at + * once if desired. + * + * If in the normal state, or if in the COOLDOWN state and normal is 0, this is + * a no-op and returns 1. Returns 0 if the 1-RTT EL has not been provisioned or + * has been dropped. + * + * It is essential that the caller call this within a few PTO intervals of a key + * update occurring (as detected by the caller in a call to + * ossl_qrx_key_get_key_epoch()), as otherwise the peer will not be able to + * perform a Key Update ever again. + */ +int ossl_qrx_key_update_timeout(OSSL_QRX *qrx, int normal); + + +/* + * Key Expiration + * ============== + */ + +/* + * Returns the number of seemingly forged packets which have been received by + * the QRX. If this value reaches the value returned by + * ossl_qrx_get_max_epoch_forged_pkt_count() for a given EL, all further + * received encrypted packets for that EL will be discarded without processing. + * + * Note that the forged packet limit is for the connection lifetime, thus it is + * not reset by a key update. It is suggested that the caller terminate the + * connection a reasonable margin before the limit is reached. However, the + * exact limit imposed does vary by EL due to the possibility that different ELs + * use different AEADs. + */ +uint64_t ossl_qrx_get_cur_forged_pkt_count(OSSL_QRX *qrx); + +/* + * Returns the maximum number of forged packets which the record layer will + * permit to be verified using this QRX instance. + */ +uint64_t ossl_qrx_get_max_forged_pkt_count(OSSL_QRX *qrx, + uint32_t enc_level); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_tx.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_tx.h new file mode 100644 index 00000000..f3b798fe --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_tx.h @@ -0,0 +1,383 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RECORD_TX_H +# define OSSL_QUIC_RECORD_TX_H + +# include +# include "internal/quic_wire_pkt.h" +# include "internal/quic_types.h" +# include "internal/quic_record_util.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Record Layer - TX + * ====================== + */ +typedef struct ossl_qtx_iovec_st { + const unsigned char *buf; + size_t buf_len; +} OSSL_QTX_IOVEC; + +typedef struct ossl_qtx_st OSSL_QTX; + +typedef int (*ossl_mutate_packet_cb)(const QUIC_PKT_HDR *hdrin, + const OSSL_QTX_IOVEC *iovecin, size_t numin, + QUIC_PKT_HDR **hdrout, + const OSSL_QTX_IOVEC **iovecout, + size_t *numout, + void *arg); + +typedef void (*ossl_finish_mutate_cb)(void *arg); + +typedef struct ossl_qtx_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + + /* BIO to transmit to. */ + BIO *bio; + + /* Maximum datagram payload length (MDPL) for TX purposes. */ + size_t mdpl; +} OSSL_QTX_ARGS; + +/* Instantiates a new QTX. */ +OSSL_QTX *ossl_qtx_new(const OSSL_QTX_ARGS *args); + +/* Frees the QTX. */ +void ossl_qtx_free(OSSL_QTX *qtx); + +/* Set mutator callbacks for test framework support */ +void ossl_qtx_set_mutator(OSSL_QTX *qtx, ossl_mutate_packet_cb mutatecb, + ossl_finish_mutate_cb finishmutatecb, void *mutatearg); + +/* Setters for the msg_callback and the msg_callback_arg */ +void ossl_qtx_set_msg_callback(OSSL_QTX *qtx, ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_qtx_set_msg_callback_arg(OSSL_QTX *qtx, void *msg_callback_arg); + +/* + * Secret Management + * ----------------- + */ + +/* + * Provides a secret to the QTX, which arises due to an encryption level change. + * enc_level is a QUIC_ENC_LEVEL_* value. + * + * This function can be used to initialise the INITIAL encryption level, but you + * should not do so directly; see the utility function + * ossl_qrl_provide_initial_secret() instead, which can initialise the INITIAL + * encryption level of a QRX and QTX simultaneously without duplicating certain + * key derivation steps. + * + * You must call this function for a given EL before transmitting packets at + * that EL using this QTX, otherwise ossl_qtx_write_pkt will fail. + * + * suite_id is a QRL_SUITE_* value which determines the AEAD function used for + * the QTX. + * + * The secret passed is used directly to derive the "quic key", "quic iv" and + * "quic hp" values. + * + * secret_len is the length of the secret buffer in bytes. The buffer must be + * sized correctly to the chosen suite, else the function fails. + * + * This function can only be called once for a given EL, except for the INITIAL + * EL, as the INITIAL EL can need to be rekeyed if connection retry occurs. + * Subsequent calls for non-INITIAL ELs fail. Calls made after a corresponding + * call to ossl_qtx_discard_enc_level for a given EL also fail, including for + * the INITIAL EL. The secret for a non-INITIAL EL cannot be changed after it is + * set because QUIC has no facility for introducing additional key material + * after an EL is setup. (QUIC key updates generate new keys from existing key + * material and do not introduce new entropy into a connection's key material.) + * + * Returns 1 on success or 0 on failure. + */ +int ossl_qtx_provide_secret(OSSL_QTX *qtx, + uint32_t enc_level, + uint32_t suite_id, + EVP_MD *md, + const unsigned char *secret, + size_t secret_len); + +/* + * Informs the QTX that it can now discard key material for a given EL. The QTX + * will no longer be able to generate packets at that EL. This function is + * idempotent and succeeds if the EL has already been discarded. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_qtx_discard_enc_level(OSSL_QTX *qtx, uint32_t enc_level); + +/* Returns 1 if the given encryption level is provisioned. */ +int ossl_qtx_is_enc_level_provisioned(OSSL_QTX *qtx, uint32_t enc_level); + +/* + * Given the value ciphertext_len representing an encrypted packet payload + * length in bytes, determines how many plaintext bytes it will decrypt to. + * Returns 0 if the specified EL is not provisioned or ciphertext_len is too + * small. The result is written to *plaintext_len. + */ +int ossl_qtx_calculate_plaintext_payload_len(OSSL_QTX *qtx, uint32_t enc_level, + size_t ciphertext_len, + size_t *plaintext_len); + +/* + * Given the value plaintext_len represented a plaintext packet payload length + * in bytes, determines how many ciphertext bytes it will encrypt to. The value + * output does not include packet headers. Returns 0 if the specified EL is not + * provisioned. The result is written to *ciphertext_len. + */ +int ossl_qtx_calculate_ciphertext_payload_len(OSSL_QTX *qtx, uint32_t enc_level, + size_t plaintext_len, + size_t *ciphertext_len); + +uint32_t ossl_qrl_get_suite_cipher_tag_len(uint32_t suite_id); + + +/* + * Packet Transmission + * ------------------- + */ + +typedef struct ossl_qtx_pkt_st { + /* Logical packet header to be serialized. */ + QUIC_PKT_HDR *hdr; + + /* + * iovecs expressing the logical packet payload buffer. Zero-length entries + * are permitted. + */ + const OSSL_QTX_IOVEC *iovec; + size_t num_iovec; + + /* Destination address. Will be passed through to the BIO if non-NULL. */ + const BIO_ADDR *peer; + + /* + * Local address (optional). Specify as non-NULL only if TX BIO + * has local address support enabled. + */ + const BIO_ADDR *local; + + /* + * Logical PN. Used for encryption. This will automatically be encoded to + * hdr->pn, which need not be initialized. + */ + QUIC_PN pn; + + /* Packet flags. Zero or more OSSL_QTX_PKT_FLAG_* values. */ + uint32_t flags; +} OSSL_QTX_PKT; + +/* + * More packets will be written which should be coalesced into a single + * datagram; do not send this packet yet. To use this, set this flag for all + * packets but the final packet in a datagram, then send the final packet + * without this flag set. + * + * This flag is not a guarantee and the QTX may transmit immediately anyway if + * it is not possible to fit any more packets in the current datagram. + * + * If the caller change its mind and needs to cause a packet queued with + * COALESCE after having passed it to this function but without writing another + * packet, it should call ossl_qtx_flush_pkt(). + */ +#define OSSL_QTX_PKT_FLAG_COALESCE (1U << 0) + +/* + * Writes a packet. + * + * *pkt need be valid only for the duration of the call to this function. + * + * pkt->hdr->data and pkt->hdr->len are unused. The payload buffer is specified + * via an array of OSSL_QTX_IOVEC structures. The API is designed to support + * single-copy transmission; data is copied from the iovecs as it is encrypted + * into an internal staging buffer for transmission. + * + * The function may modify and clobber pkt->hdr->data, pkt->hdr->len, + * pkt->hdr->key_phase and pkt->hdr->pn for its own internal use. No other + * fields of pkt or pkt->hdr will be modified. + * + * It is the callers responsibility to determine how long the PN field in the + * encoded packet should be by setting pkt->hdr->pn_len. This function takes + * care of the PN encoding. Set pkt->pn to the desired PN. + * + * Note that 1-RTT packets do not have a DCID Length field, therefore the DCID + * length must be understood contextually. This function assumes the caller + * knows what it is doing and will serialize a DCID of whatever length is given. + * It is the caller's responsibility to ensure it uses a consistent DCID length + * for communication with any given set of remote peers. + * + * The packet is queued regardless of whether it is able to be sent immediately. + * This enables packets to be batched and sent at once on systems which support + * system calls to send multiple datagrams in a single system call (see + * BIO_sendmmsg). To flush queued datagrams to the network, see + * ossl_qtx_flush_net(). + * + * Returns 1 on success or 0 on failure. + */ +int ossl_qtx_write_pkt(OSSL_QTX *qtx, const OSSL_QTX_PKT *pkt); + +/* + * Finish any incomplete datagrams for transmission which were flagged for + * coalescing. If there is no current coalescing datagram, this is a no-op. + */ +void ossl_qtx_finish_dgram(OSSL_QTX *qtx); + +/* + * (Attempt to) flush any datagrams which are queued for transmission. Note that + * this does not cancel coalescing; call ossl_qtx_finish_dgram() first if that + * is desired. The queue is drained into the OS's sockets as much as possible. + * To determine if there is still data to be sent after calling this function, + * use ossl_qtx_get_queue_len_bytes(). + * + * Returns one of the following values: + * + * QTX_FLUSH_NET_RES_OK + * Either no packets are currently queued for transmission, + * or at least one packet was successfully submitted. + * + * QTX_FLUSH_NET_RES_TRANSIENT_FAIL + * The underlying network write BIO indicated a transient error + * (e.g. buffers full). + * + * QTX_FLUSH_NET_RES_PERMANENT_FAIL + * Internal error (e.g. assertion or allocation error) + * or the underlying network write BIO indicated a non-transient + * error. + */ +#define QTX_FLUSH_NET_RES_OK 1 +#define QTX_FLUSH_NET_RES_TRANSIENT_FAIL (-1) +#define QTX_FLUSH_NET_RES_PERMANENT_FAIL (-2) + +int ossl_qtx_flush_net(OSSL_QTX *qtx); + +/* + * Diagnostic function. If there is any datagram pending transmission, pops it + * and writes the details of the datagram as they would have been passed to + * *msg. Returns 1, or 0 if there are no datagrams pending. For test use only. + */ +int ossl_qtx_pop_net(OSSL_QTX *qtx, BIO_MSG *msg); + +/* Returns number of datagrams which are fully-formed but not yet sent. */ +size_t ossl_qtx_get_queue_len_datagrams(OSSL_QTX *qtx); + +/* + * Returns number of payload bytes across all datagrams which are fully-formed + * but not yet sent. Does not count any incomplete coalescing datagram. + */ +size_t ossl_qtx_get_queue_len_bytes(OSSL_QTX *qtx); + +/* + * Returns number of bytes in the current coalescing datagram, or 0 if there is + * no current coalescing datagram. Returns 0 after a call to + * ossl_qtx_finish_dgram(). + */ +size_t ossl_qtx_get_cur_dgram_len_bytes(OSSL_QTX *qtx); + +/* + * Returns number of queued coalesced packets which have not been put into a + * datagram yet. If this is non-zero, ossl_qtx_flush_pkt() needs to be called. + */ +size_t ossl_qtx_get_unflushed_pkt_count(OSSL_QTX *qtx); + +/* + * Change the BIO being used by the QTX. May be NULL if actual transmission is + * not currently required. Does not up-ref the BIO; the caller is responsible + * for ensuring the lifetime of the BIO exceeds the lifetime of the QTX. + */ +void ossl_qtx_set_bio(OSSL_QTX *qtx, BIO *bio); + +/* Changes the MDPL. */ +int ossl_qtx_set_mdpl(OSSL_QTX *qtx, size_t mdpl); + +/* Retrieves the current MDPL. */ +size_t ossl_qtx_get_mdpl(OSSL_QTX *qtx); + + +/* + * Key Update + * ---------- + * + * For additional discussion of key update considerations, see QRX header file. + */ + +/* + * Triggers a key update. The key update will be started by inverting the Key + * Phase bit of the next packet transmitted; no key update occurs until the next + * packet is transmitted. Thus, this function should generally be called + * immediately before queueing the next packet. + * + * There are substantial requirements imposed by RFC 9001 on under what + * circumstances a key update can be initiated. The caller is responsible for + * meeting most of these requirements. For example, this function cannot be + * called too soon after a previous key update has occurred. Key updates also + * cannot be initiated until the 1-RTT encryption level is reached. + * + * As a sanity check, this function will fail and return 0 if the non-1RTT + * encryption levels have not yet been dropped. + * + * The caller may decide itself to initiate a key update, but it also MUST + * initiate a key update where it detects that the peer has initiated a key + * update. The caller is responsible for initiating a TX key update by calling + * this function in this circumstance; thus, the caller is responsible for + * coupling the RX and TX QUIC record layers in this way. + */ +int ossl_qtx_trigger_key_update(OSSL_QTX *qtx); + + +/* + * Key Expiration + * -------------- + */ + +/* + * Returns the number of packets which have been encrypted for transmission with + * the current set of TX keys (the current "TX key epoch"). Reset to zero after + * a key update and incremented for each packet queued. If enc_level is not + * valid or relates to an EL which is not currently available, returns + * UINT64_MAX. + */ +uint64_t ossl_qtx_get_cur_epoch_pkt_count(OSSL_QTX *qtx, uint32_t enc_level); + +/* + * Returns the maximum number of packets which the record layer will permit to + * be encrypted using the current set of TX keys. If this limit is reached (that + * is, if the counter returned by ossl_qrx_tx_get_cur_epoch_pkt_count() reaches + * this value), as a safety measure, the QTX will not permit any further packets + * to be queued. All calls to ossl_qrx_write_pkt that try to send packets of a + * kind which need to be encrypted will fail. It is not possible to recover from + * this condition and the QTX must then be destroyed; therefore, callers should + * ensure they always trigger a key update well in advance of reaching this + * limit. + * + * The value returned by this function is based on the ciphersuite configured + * for the given encryption level. If keys have not been provisioned for the + * specified enc_level or the enc_level argument is invalid, this function + * returns UINT64_MAX, which is not a valid value. Note that it is not possible + * to perform a key update at any encryption level other than 1-RTT, therefore + * if this limit is reached at earlier encryption levels (which should not be + * possible) the connection must be terminated. Since this condition precludes + * the transmission of further packets, the only possible signalling of such an + * error condition to a peer is a Stateless Reset packet. + */ +uint64_t ossl_qtx_get_max_epoch_pkt_count(OSSL_QTX *qtx, uint32_t enc_level); + +/* + * Get the 1-RTT EL key epoch number for the QTX. This is intended for + * diagnostic purposes. Returns 0 if 1-RTT EL is not provisioned yet. + */ +uint64_t ossl_qtx_get_key_epoch(OSSL_QTX *qtx); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_util.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_util.h new file mode 100644 index 00000000..97e630d9 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_record_util.h @@ -0,0 +1,116 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RECORD_UTIL_H +# define OSSL_QUIC_RECORD_UTIL_H + +# include +# include "internal/quic_types.h" + +# ifndef OPENSSL_NO_QUIC + +struct ossl_qrx_st; +struct ossl_qtx_st; + +/* + * QUIC Key Derivation Utilities + * ============================= + */ + +/* HKDF-Extract(salt, IKM) (RFC 5869) */ +int ossl_quic_hkdf_extract(OSSL_LIB_CTX *libctx, + const char *propq, + const EVP_MD *md, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + unsigned char *out, size_t out_len); + +/* + * A QUIC client sends its first INITIAL packet with a random DCID, which + * is used to compute the secrets used for INITIAL packet encryption in both + * directions (both client-to-server and server-to-client). + * + * This function performs the necessary DCID-based key derivation, and then + * provides the derived key material for the INITIAL encryption level to a QRX + * instance, a QTX instance, or both. + * + * This function derives the necessary key material and then: + * - if qrx is non-NULL, provides the appropriate secret to it; + * - if qtx is non-NULL, provides the appropriate secret to it. + * + * If both qrx and qtx are NULL, this is a no-op. This function is equivalent to + * making the appropriate calls to ossl_qrx_provide_secret() and + * ossl_qtx_provide_secret(). + * + * It is possible to use a QRX or QTX without ever calling this, for example if + * there is no desire to handle INITIAL packets (e.g. if a QRX/QTX is + * instantiated to succeed a previous QRX/QTX and handle a connection which is + * already established). However in this case you should make sure you call + * ossl_qrx_discard_enc_level(); see the header for that function for more + * details. Calling ossl_qtx_discard_enc_level() is not essential but could + * protect against programming errors. + * + * Returns 1 on success or 0 on error. + */ +int ossl_quic_provide_initial_secret(OSSL_LIB_CTX *libctx, + const char *propq, + const QUIC_CONN_ID *dst_conn_id, + int is_server, + struct ossl_qrx_st *qrx, + struct ossl_qtx_st *qtx); + +/* + * QUIC Record Layer Ciphersuite Info + * ================================== + */ + +/* Available QUIC Record Layer (QRL) ciphersuites. */ +# define QRL_SUITE_AES128GCM 1 /* SHA256 */ +# define QRL_SUITE_AES256GCM 2 /* SHA384 */ +# define QRL_SUITE_CHACHA20POLY1305 3 /* SHA256 */ + +/* Returns cipher name in bytes or NULL if suite ID is invalid. */ +const char *ossl_qrl_get_suite_cipher_name(uint32_t suite_id); + +/* Returns hash function name in bytes or NULL if suite ID is invalid. */ +const char *ossl_qrl_get_suite_md_name(uint32_t suite_id); + +/* Returns secret length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_secret_len(uint32_t suite_id); + +/* Returns key length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_cipher_key_len(uint32_t suite_id); + +/* Returns IV length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_cipher_iv_len(uint32_t suite_id); + +/* Returns AEAD auth tag length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_cipher_tag_len(uint32_t suite_id); + +/* Returns a QUIC_HDR_PROT_CIPHER_* value or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_hdr_prot_cipher_id(uint32_t suite_id); + +/* Returns header protection key length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_hdr_prot_key_len(uint32_t suite_id); + +/* + * Returns maximum number of packets which may be safely encrypted with a suite + * or 0 if suite ID is invalid. + */ +uint64_t ossl_qrl_get_suite_max_pkt(uint32_t suite_id); + +/* + * Returns maximum number of RX'd packets which may safely fail AEAD decryption + * for a given suite or 0 if suite ID is invalid. + */ +uint64_t ossl_qrl_get_suite_max_forged_pkt(uint32_t suite_id); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_rx_depack.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_rx_depack.h new file mode 100644 index 00000000..c90964a7 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_rx_depack.h @@ -0,0 +1,21 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RX_DEPACK_H +# define OSSL_QUIC_RX_DEPACK_H + +# include "internal/quic_channel.h" + +# ifndef OPENSSL_NO_QUIC + +int ossl_quic_handle_frames(QUIC_CHANNEL *qc, OSSL_QRX_PKT *qpacket); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_sf_list.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_sf_list.h new file mode 100644 index 00000000..8ed1dcb1 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_sf_list.h @@ -0,0 +1,151 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_SF_LIST_H +# define OSSL_QUIC_SF_LIST_H + +#include "internal/common.h" +#include "internal/uint_set.h" +#include "internal/quic_record_rx.h" + +/* + * Stream frame list + * ================= + * + * This data structure supports similar operations as uint64 set but + * it has slightly different invariants and also carries data associated with + * the ranges in the list. + * + * Operations: + * Insert frame (optimized insertion at the beginning and at the end). + * Iterated peek into the frame(s) from the beginning. + * Dropping frames from the beginning up to an offset (exclusive). + * + * Invariant: The frames in the list are sorted by the start and end bounds. + * Invariant: There are no fully overlapping frames or frames that would + * be fully encompassed by another frame in the list. + * Invariant: No frame has start > end. + * Invariant: The range start is inclusive the end is exclusive to be + * able to mark an empty frame. + * Invariant: The offset never points further than into the first frame. + */ +# ifndef OPENSSL_NO_QUIC + +typedef struct stream_frame_st STREAM_FRAME; + +typedef struct sframe_list_st { + STREAM_FRAME *head, *tail; + /* Is the tail frame final. */ + unsigned int fin; + /* Number of stream frames in the list. */ + size_t num_frames; + /* Offset of data not yet dropped */ + uint64_t offset; + /* Is head locked ? */ + int head_locked; + /* Cleanse data on release? */ + int cleanse; +} SFRAME_LIST; + +/* + * Initializes the stream frame list fl. + */ +void ossl_sframe_list_init(SFRAME_LIST *fl); + +/* + * Destroys the stream frame list fl releasing any data + * still present inside it. + */ +void ossl_sframe_list_destroy(SFRAME_LIST *fl); + +/* + * Insert a stream frame data into the list. + * The data covers an offset range (range.start is inclusive, + * range.end is exclusive). + * fin should be set if this is the final frame of the stream. + * Returns an error if a frame cannot be inserted - due to + * STREAM_FRAME allocation error, or in case of erroneous + * fin flag (this is an ossl_assert() check so a caller must + * check it on its own too). + */ +int ossl_sframe_list_insert(SFRAME_LIST *fl, UINT_RANGE *range, + OSSL_QRX_PKT *pkt, + const unsigned char *data, int fin); + +/* + * Iterator to peek at the contiguous frames at the beginning + * of the frame list fl. + * The *data covers an offset range (range.start is inclusive, + * range.end is exclusive). + * *fin is set if this is the final frame of the stream. + * Opaque iterator *iter can be used to peek at the subsequent + * frame if there is any without any gap before it. + * Returns 1 on success. + * Returns 0 if there is no further contiguous frame. In that + * case *fin is set, if the end of the stream is reached. + */ +int ossl_sframe_list_peek(const SFRAME_LIST *fl, void **iter, + UINT_RANGE *range, const unsigned char **data, + int *fin); + +/* + * Drop all frames up to the offset limit. + * Also unlocks the head frame if locked. + * Returns 1 on success. + * Returns 0 when trying to drop frames at offsets that were not + * received yet. (ossl_assert() is used to check, so this is an invalid call.) + */ +int ossl_sframe_list_drop_frames(SFRAME_LIST *fl, uint64_t limit); + +/* + * Locks and returns the head frame of fl if it is readable - read offset is + * at the beginning or middle of the frame. + * range is set to encompass the not yet read part of the head frame, + * data pointer is set to appropriate offset within the frame if the read + * offset points in the middle of the frame, + * fin is set to 1 if the head frame is also the tail frame. + * Returns 1 on success, 0 if there is no readable data or the head + * frame is already locked. + */ +int ossl_sframe_list_lock_head(SFRAME_LIST *fl, UINT_RANGE *range, + const unsigned char **data, + int *fin); + +/* + * Just returns whether the head frame is locked by previous + * ossl_sframe_list_lock_head() call. + */ +int ossl_sframe_list_is_head_locked(SFRAME_LIST *fl); + +/* + * Callback function type to write stream frame data to some + * side storage before the packet containing the frame data + * is released. + * It should return 1 on success or 0 if there is not enough + * space available in the side storage. + */ +typedef int (sframe_list_write_at_cb)(uint64_t logical_offset, + const unsigned char *buf, + size_t buf_len, + void *cb_arg); + +/* + * Move the frame data in all the stream frames in the list fl + * from the packets to the side storage using the write_at_cb + * callback. + * Returns 1 if all the calls to the callback return 1. + * If the callback returns 0, the function stops processing further + * frames and returns 0. + */ +int ossl_sframe_list_move_data(SFRAME_LIST *fl, + sframe_list_write_at_cb *write_at_cb, + void *cb_arg); +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ssl.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ssl.h new file mode 100644 index 00000000..52d4527c --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_ssl.h @@ -0,0 +1,132 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_SSL_H +# define OSSL_QUIC_SSL_H + +# include +# include +# include "internal/quic_record_rx.h" /* OSSL_QRX */ +# include "internal/quic_ackm.h" /* OSSL_ACKM */ +# include "internal/quic_channel.h" /* QUIC_CHANNEL */ + +# ifndef OPENSSL_NO_QUIC + +__owur SSL *ossl_quic_new(SSL_CTX *ctx); +__owur int ossl_quic_init(SSL *s); +void ossl_quic_deinit(SSL *s); +void ossl_quic_free(SSL *s); +int ossl_quic_reset(SSL *s); +int ossl_quic_clear(SSL *s); +__owur int ossl_quic_accept(SSL *s); +__owur int ossl_quic_connect(SSL *s); +__owur int ossl_quic_read(SSL *s, void *buf, size_t len, size_t *readbytes); +__owur int ossl_quic_peek(SSL *s, void *buf, size_t len, size_t *readbytes); +__owur int ossl_quic_write(SSL *s, const void *buf, size_t len, size_t *written); +__owur long ossl_quic_ctrl(SSL *s, int cmd, long larg, void *parg); +__owur long ossl_quic_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +__owur long ossl_quic_callback_ctrl(SSL *s, int cmd, void (*fp) (void)); +__owur long ossl_quic_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void)); +__owur size_t ossl_quic_pending(const SSL *s); +__owur int ossl_quic_key_update(SSL *s, int update_type); +__owur int ossl_quic_get_key_update_type(const SSL *s); +__owur const SSL_CIPHER *ossl_quic_get_cipher_by_char(const unsigned char *p); +__owur int ossl_quic_num_ciphers(void); +__owur const SSL_CIPHER *ossl_quic_get_cipher(unsigned int u); +int ossl_quic_renegotiate_check(SSL *ssl, int initok); + +typedef struct quic_conn_st QUIC_CONNECTION; +typedef struct quic_xso_st QUIC_XSO; + +int ossl_quic_do_handshake(SSL *s); +void ossl_quic_set_connect_state(SSL *s); +void ossl_quic_set_accept_state(SSL *s); + +__owur int ossl_quic_has_pending(const SSL *s); +__owur int ossl_quic_handle_events(SSL *s); +__owur int ossl_quic_get_event_timeout(SSL *s, struct timeval *tv, + int *is_infinite); +OSSL_TIME ossl_quic_get_event_deadline(SSL *s); +__owur int ossl_quic_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *d); +__owur int ossl_quic_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *d); +__owur int ossl_quic_get_net_read_desired(SSL *s); +__owur int ossl_quic_get_net_write_desired(SSL *s); +__owur int ossl_quic_get_error(const SSL *s, int i); +__owur int ossl_quic_want(const SSL *s); +__owur int ossl_quic_conn_get_blocking_mode(const SSL *s); +__owur int ossl_quic_conn_set_blocking_mode(SSL *s, int blocking); +__owur int ossl_quic_conn_shutdown(SSL *s, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); +__owur int ossl_quic_conn_stream_conclude(SSL *s); +void ossl_quic_conn_set0_net_rbio(SSL *s, BIO *net_wbio); +void ossl_quic_conn_set0_net_wbio(SSL *s, BIO *net_wbio); +BIO *ossl_quic_conn_get_net_rbio(const SSL *s); +BIO *ossl_quic_conn_get_net_wbio(const SSL *s); +__owur int ossl_quic_conn_set_initial_peer_addr(SSL *s, + const BIO_ADDR *peer_addr); +__owur SSL *ossl_quic_conn_stream_new(SSL *s, uint64_t flags); +__owur SSL *ossl_quic_get0_connection(SSL *s); +__owur int ossl_quic_get_stream_type(SSL *s); +__owur uint64_t ossl_quic_get_stream_id(SSL *s); +__owur int ossl_quic_is_stream_local(SSL *s); +__owur int ossl_quic_set_default_stream_mode(SSL *s, uint32_t mode); +__owur SSL *ossl_quic_detach_stream(SSL *s); +__owur int ossl_quic_attach_stream(SSL *conn, SSL *stream); +__owur int ossl_quic_set_incoming_stream_policy(SSL *s, int policy, + uint64_t aec); +__owur SSL *ossl_quic_accept_stream(SSL *s, uint64_t flags); +__owur size_t ossl_quic_get_accept_stream_queue_len(SSL *s); + +__owur int ossl_quic_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +__owur int ossl_quic_get_stream_read_state(SSL *ssl); +__owur int ossl_quic_get_stream_write_state(SSL *ssl); +__owur int ossl_quic_get_stream_read_error_code(SSL *ssl, + uint64_t *app_error_code); +__owur int ossl_quic_get_stream_write_error_code(SSL *ssl, + uint64_t *app_error_code); +__owur int ossl_quic_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +uint64_t ossl_quic_set_options(SSL *s, uint64_t opts); +uint64_t ossl_quic_clear_options(SSL *s, uint64_t opts); +uint64_t ossl_quic_get_options(const SSL *s); + +/* Modifies write buffer size for a stream. */ +__owur int ossl_quic_set_write_buffer_size(SSL *s, size_t size); + +/* + * Used to override ossl_time_now() for debug purposes. While this may be + * overridden at any time, expect strange results if you change it after + * connecting. + */ +int ossl_quic_conn_set_override_now_cb(SSL *s, + OSSL_TIME (*now_cb)(void *arg), + void *now_cb_arg); + +/* + * Condvar waiting in the assist thread doesn't support time faking as it relies + * on the OS's notion of time, thus this is used in test code to force a + * spurious wakeup instead. + */ +void ossl_quic_conn_force_assist_thread_wake(SSL *s); + +/* For use by tests only. */ +QUIC_CHANNEL *ossl_quic_conn_get_channel(SSL *s); + +int ossl_quic_has_pending(const SSL *s); +int ossl_quic_get_shutdown(const SSL *s); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_statm.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_statm.h new file mode 100644 index 00000000..5b33551b --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_statm.h @@ -0,0 +1,40 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_STATS_H +# define OSSL_QUIC_STATS_H + +# include +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +typedef struct ossl_statm_st { + OSSL_TIME smoothed_rtt, latest_rtt, min_rtt, rtt_variance; + char have_first_sample; +} OSSL_STATM; + +typedef struct ossl_rtt_info_st { + /* As defined in RFC 9002. */ + OSSL_TIME smoothed_rtt, latest_rtt, rtt_variance, min_rtt; +} OSSL_RTT_INFO; + +int ossl_statm_init(OSSL_STATM *statm); + +void ossl_statm_destroy(OSSL_STATM *statm); + +void ossl_statm_get_rtt_info(OSSL_STATM *statm, OSSL_RTT_INFO *rtt_info); + +void ossl_statm_update_rtt(OSSL_STATM *statm, + OSSL_TIME ack_delay, + OSSL_TIME override_latest_rtt); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream.h new file mode 100644 index 00000000..0da8febd --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream.h @@ -0,0 +1,429 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_STREAM_H +# define OSSL_INTERNAL_QUIC_STREAM_H +# pragma once + +#include "internal/e_os.h" +#include "internal/time.h" +#include "internal/quic_types.h" +#include "internal/quic_wire.h" +#include "internal/quic_record_tx.h" +#include "internal/quic_record_rx.h" +#include "internal/quic_fc.h" +#include "internal/quic_statm.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Send Stream + * ================ + * + * The QUIC Send Stream Manager (QUIC_SSTREAM) is responsible for: + * + * - accepting octet strings of stream data; + * + * - generating corresponding STREAM frames; + * + * - receiving notifications of lost frames, in order to generate new STREAM + * frames for the lost data; + * + * - receiving notifications of acknowledged frames, in order to internally + * reuse memory used to store acknowledged stream data; + * + * - informing the caller of how much more stream data it can accept into + * its internal buffers, so as to ensure that the amount of unacknowledged + * data which can be written to a stream is not infinite and to allow the + * caller to manifest backpressure conditions to the user. + * + * The QUIC_SSTREAM is instantiated once for every stream with a send component + * (i.e., for a unidirectional send stream or for the send component of a + * bidirectional stream). + * + * Note: The terms 'TX' and 'RX' are used when referring to frames, packets and + * datagrams. The terms 'send' and 'receive' are used when referring to the + * stream abstraction. Applications send; we transmit. + */ +typedef struct quic_sstream_st QUIC_SSTREAM; + +/* + * Instantiates a new QUIC_SSTREAM. init_buf_size specifies the initial size of + * the stream data buffer in bytes, which must be positive. + */ +QUIC_SSTREAM *ossl_quic_sstream_new(size_t init_buf_size); + +/* + * Frees a QUIC_SSTREAM and associated stream data storage. + * + * Any iovecs returned by ossl_quic_sstream_get_stream_frame cease to be valid after + * calling this function. + */ +void ossl_quic_sstream_free(QUIC_SSTREAM *qss); + +/* + * (For TX packetizer use.) Retrieves information about application stream data + * which is ready for transmission. + * + * *hdr is filled with the logical offset, maximum possible length of stream + * data which can be transmitted, and a pointer to the stream data to be + * transmitted. is_fin is set to 1 if hdr->offset + hdr->len is the final size + * of the stream and 0 otherwise. hdr->stream_id is not set; the caller must set + * it. + * + * The caller is not obligated to send all of the data. If the caller does not + * send all of the data, the caller must reduce hdr->len before serializing the + * header structure and must ensure that hdr->is_fin is cleared. + * + * hdr->has_explicit_len is always set. It is the caller's responsibility to + * clear this if it wants to use the optimization of omitting the length field, + * as only the caller can know when this optimization can be performed. + * + * *num_iov must be set to the size of the iov array at call time. When this + * function returns successfully, it is updated to the number of iov entries + * which have been written. + * + * The stream data may be split across up to two IOVs due to internal ring + * buffer organisation. The sum of the lengths of the IOVs and the value written + * to hdr->len will always match. If the caller decides to send less than + * hdr->len of stream data, it must adjust the IOVs accordingly. This may be + * done by updating hdr->len and then calling the utility function + * ossl_quic_sstream_adjust_iov(). + * + * After committing one or more bytes returned by ossl_quic_sstream_get_stream_frame to a + * packet, call ossl_quic_sstream_mark_transmitted with the inclusive range of logical + * byte numbers of the transmitted bytes (i.e., hdr->offset, hdr->offset + + * hdr->len - 1). If you do not call ossl_quic_sstream_mark_transmitted, the next call to + * ossl_quic_sstream_get_stream_frame will return the same data (or potentially the same + * and more, if more data has been appended by the application). + * + * It is the caller's responsibility to clamp the length of data which this + * function indicates is available according to other concerns, such as + * stream-level flow control, connection-level flow control, or the applicable + * maximum datagram payload length (MDPL) for a packet under construction. + * + * The skip argument can usually be given as zero. If it is non-zero, this + * function outputs a range which would be output if it were called again after + * calling ossl_quic_sstream_mark_transmitted() with the returned range, repeated 'skip' + * times, and so on. This may be useful for callers which wish to enumerate + * available stream frames and batch their calls to ossl_quic_sstream_mark_transmitted at + * a later time. + * + * On success, this function will never write *num_iov with a value other than + * 0, 1 or 2. A *num_iov value of 0 can only occurs when hdr->is_fin is set (for + * example, when a stream is closed after all existing data has been sent, and + * without sending any more data); otherwise the function returns 0 as there is + * nothing useful to report. + * + * Returns 1 on success and 0 if there is no stream data available for + * transmission, or on other error (such as if the caller provides fewer + * than two IOVs.) + */ +int ossl_quic_sstream_get_stream_frame(QUIC_SSTREAM *qss, + size_t skip, + OSSL_QUIC_FRAME_STREAM *hdr, + OSSL_QTX_IOVEC *iov, + size_t *num_iov); + +/* + * Returns 1 if there is data pending transmission. Equivalent to calling + * ossl_quic_sstream_get_stream_frame and seeing if it succeeds. + */ +int ossl_quic_sstream_has_pending(QUIC_SSTREAM *qss); + +/* + * Returns the current size of the stream; i.e., the number of bytes which have + * been appended to the stream so far. + */ +uint64_t ossl_quic_sstream_get_cur_size(QUIC_SSTREAM *qss); + +/* + * (For TX packetizer use.) Marks a logical range of the send stream as having + * been transmitted. + * + * 0 denotes the first byte ever sent on the stream. The start and end values + * are both inclusive, therefore all calls to this function always mark at least + * one byte as being transmitted; if no bytes have been transmitted, do not call + * this function. + * + * If the STREAM frame sent had the FIN bit set, you must also call + * ossl_quic_sstream_mark_transmitted_fin() after calling this function. + * + * If you sent a zero-length STREAM frame with the FIN bit set, you need only + * call ossl_quic_sstream_mark_transmitted_fin() and must not call this function. + * + * Returns 1 on success and 0 on error (e.g. if end < start). + */ +int ossl_quic_sstream_mark_transmitted(QUIC_SSTREAM *qss, + uint64_t start, + uint64_t end); + +/* + * (For TX packetizer use.) Marks a STREAM frame with the FIN bit set as having + * been transmitted. final_size is the final size of the stream (i.e., the value + * offset + len of the transmitted STREAM frame). + * + * This function fails returning 0 if ossl_quic_sstream_fin() has not been called or if + * final_size is not correct. The final_size argument is not strictly needed by + * the QUIC_SSTREAM but is required as a sanity check. + */ +int ossl_quic_sstream_mark_transmitted_fin(QUIC_SSTREAM *qss, + uint64_t final_size); + +/* + * (RX/ACKM use.) Marks a logical range of the send stream as having been lost. + * The send stream will return the lost data for retransmission on a future call + * to ossl_quic_sstream_get_stream_frame. The start and end values denote logical byte + * numbers and are inclusive. + * + * If the lost frame had the FIN bit set, you must also call + * ossl_quic_sstream_mark_lost_fin() after calling this function. + * + * Returns 1 on success and 0 on error (e.g. if end < start). + */ +int ossl_quic_sstream_mark_lost(QUIC_SSTREAM *qss, + uint64_t start, + uint64_t end); + +/* + * (RX/ACKM use.) Informs the QUIC_SSTREAM that a STREAM frame with the FIN bit + * set was lost. + * + * Returns 1 on success and 0 on error. + */ +int ossl_quic_sstream_mark_lost_fin(QUIC_SSTREAM *qss); + +/* + * (RX/ACKM use.) Marks a logical range of the send stream as having been + * acknowledged, meaning that the storage for the data in that range of the + * stream can be now recycled and neither that logical range of the stream nor + * any subset of it can be retransmitted again. The start and end values are + * inclusive. + * + * If the acknowledged frame had the FIN bit set, you must also call + * ossl_quic_sstream_mark_acked_fin() after calling this function. + * + * Returns 1 on success and 0 on error (e.g. if end < start). + */ +int ossl_quic_sstream_mark_acked(QUIC_SSTREAM *qss, + uint64_t start, + uint64_t end); + +/* + * (RX/ACKM use.) Informs the QUIC_SSTREAM that a STREAM frame with the FIN bit + * set was acknowledged. + * + * Returns 1 on success and 0 on error. + */ +int ossl_quic_sstream_mark_acked_fin(QUIC_SSTREAM *qss); + +/* + * (Front end use.) Appends user data to the stream. The data is copied into the + * stream. The amount of data consumed from buf is written to *consumed on + * success (short writes are possible). The amount of data which can be written + * can be determined in advance by calling the ossl_quic_sstream_get_buffer_avail() + * function; data is copied into an internal ring buffer of finite size. + * + * If the buffer is full, this should be materialised as a backpressure + * condition by the front end. This is not considered a failure condition; + * *consumed is written as 0 and the function returns 1. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_sstream_append(QUIC_SSTREAM *qss, + const unsigned char *buf, + size_t buf_len, + size_t *consumed); + +/* + * Marks a stream as finished. ossl_quic_sstream_append() may not be called anymore + * after calling this. + */ +void ossl_quic_sstream_fin(QUIC_SSTREAM *qss); + +/* + * If the stream has had ossl_quic_sstream_fin() called, returns 1 and writes + * the final size to *final_size. Otherwise, returns 0. + */ +int ossl_quic_sstream_get_final_size(QUIC_SSTREAM *qss, uint64_t *final_size); + +/* + * Returns 1 iff all bytes (and any FIN, if any) which have been appended to the + * QUIC_SSTREAM so far, and any FIN (if any), have been both sent and acked. + */ +int ossl_quic_sstream_is_totally_acked(QUIC_SSTREAM *qss); + +/* + * Resizes the internal ring buffer. All stream data is preserved safely. + * + * This can be used to expand or contract the ring buffer, but not to contract + * the ring buffer below the amount of stream data currently stored in it. + * Returns 1 on success and 0 on failure. + * + * IMPORTANT: Any buffers referenced by iovecs output by + * ossl_quic_sstream_get_stream_frame() cease to be valid after calling this function. + */ +int ossl_quic_sstream_set_buffer_size(QUIC_SSTREAM *qss, size_t num_bytes); + +/* + * Gets the internal ring buffer size in bytes. + */ +size_t ossl_quic_sstream_get_buffer_size(QUIC_SSTREAM *qss); + +/* + * Gets the number of bytes used in the internal ring buffer. + */ +size_t ossl_quic_sstream_get_buffer_used(QUIC_SSTREAM *qss); + +/* + * Gets the number of bytes free in the internal ring buffer. + */ +size_t ossl_quic_sstream_get_buffer_avail(QUIC_SSTREAM *qss); + +/* + * Utility function to ensure the length of an array of iovecs matches the + * length given as len. Trailing iovecs have their length values reduced or set + * to 0 as necessary. + */ +void ossl_quic_sstream_adjust_iov(size_t len, + OSSL_QTX_IOVEC *iov, + size_t num_iov); + +/* + * Sets flag to cleanse the buffered data when it is acked. + */ +void ossl_quic_sstream_set_cleanse(QUIC_SSTREAM *qss, int cleanse); + +/* + * QUIC Receive Stream Manager + * =========================== + * + * The QUIC Receive Stream Manager (QUIC_RSTREAM) is responsible for + * storing the received stream data frames until the application + * is able to read the data. + * + * The QUIC_RSTREAM is instantiated once for every stream that can receive data. + * (i.e., for a unidirectional receiving stream or for the receiving component + * of a bidirectional stream). + */ +typedef struct quic_rstream_st QUIC_RSTREAM; + +/* + * Create a new instance of QUIC_RSTREAM with pointers to the flow + * controller and statistics module. They can be NULL for unit testing. + * If they are non-NULL, the `rxfc` is called when receive stream data + * is read by application. `statm` is queried for current rtt. + * `rbuf_size` is the initial size of the ring buffer to be used + * when ossl_quic_rstream_move_to_rbuf() is called. + */ +QUIC_RSTREAM *ossl_quic_rstream_new(QUIC_RXFC *rxfc, + OSSL_STATM *statm, size_t rbuf_size); + +/* + * Frees a QUIC_RSTREAM and any associated storage. + */ +void ossl_quic_rstream_free(QUIC_RSTREAM *qrs); + +/* + * Adds received stream frame data to `qrs`. The `pkt_wrap` refcount is + * incremented if the `data` is queued directly without copying. + * It can be NULL for unit-testing purposes, i.e. if `data` is static or + * never released before calling ossl_quic_rstream_free(). + * The `offset` is the absolute offset of the data in the stream. + * `data_len` can be 0 - can be useful for indicating `fin` for empty stream. + * Or to indicate `fin` without any further data added to the stream. + */ + +int ossl_quic_rstream_queue_data(QUIC_RSTREAM *qrs, OSSL_QRX_PKT *pkt, + uint64_t offset, + const unsigned char *data, uint64_t data_len, + int fin); + +/* + * Copies the data from the stream storage to buffer `buf` of size `size`. + * `readbytes` is set to the number of bytes actually copied. + * `fin` is set to 1 if all the data from the stream were read so the + * stream is finished. It is set to 0 otherwise. + */ +int ossl_quic_rstream_read(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, + size_t *readbytes, int *fin); + +/* + * Peeks at the data in the stream storage. It copies them to buffer `buf` + * of size `size` and sets `readbytes` to the number of bytes actually copied. + * `fin` is set to 1 if the copied data reach end of the stream. + * It is set to 0 otherwise. + */ +int ossl_quic_rstream_peek(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, + size_t *readbytes, int *fin); + +/* + * Returns the size of the data available for reading. `fin` is set to 1 if + * after reading all the available data the stream will be finished, + * set to 0 otherwise. + */ +int ossl_quic_rstream_available(QUIC_RSTREAM *qrs, size_t *avail, int *fin); + +/* + * Sets *record to the beginning of the first readable stream data chunk and + * *reclen to the size of the chunk. *fin is set to 1 if the end of the + * chunk is the last of the stream data chunks. + * If there is no record available *record is set to NULL and *rec_len to 0; + * ossl_quic_rstream_release_record() should not be called in that case. + * Returns 1 on success (including calls if no record is available, or + * after end of the stream - in that case *fin will be set to 1 and + * *rec_len to 0), 0 on error. + * It is an error to call ossl_quic_rstream_get_record() multiple times + * without calling ossl_quic_rstream_release_record() in between. + */ +int ossl_quic_rstream_get_record(QUIC_RSTREAM *qrs, + const unsigned char **record, size_t *rec_len, + int *fin); + +/* + * Releases (possibly partially) the record returned by + * previous ossl_quic_rstream_get_record() call. + * read_len between previously returned *rec_len and SIZE_MAX indicates + * release of the whole record. Otherwise only part of the record is + * released. The remaining part of the record is unlocked, another + * call to ossl_quic_rstream_get_record() is needed to obtain further + * stream data. + * Returns 1 on success, 0 on error. + * It is an error to call ossl_quic_rstream_release_record() multiple + * times without calling ossl_quic_rstream_get_record() in between. + */ +int ossl_quic_rstream_release_record(QUIC_RSTREAM *qrs, size_t read_len); + +/* + * Moves received frame data from decrypted packets to ring buffer. + * This should be called when there are too many decrypted packets allocated. + * Returns 1 on success, 0 when it was not possible to release all + * referenced packets due to an insufficient size of the ring buffer. + * Exception is the packet from the record returned previously by + * ossl_quic_rstream_get_record() - that one will be always skipped. + */ +int ossl_quic_rstream_move_to_rbuf(QUIC_RSTREAM *qrs); + +/* + * Resizes the internal ring buffer to a new `rbuf_size` size. + * Returns 1 on success, 0 on error. + * Possible error conditions are an allocation failure, trying to resize + * the ring buffer when ossl_quic_rstream_get_record() was called and + * not yet released, or trying to resize the ring buffer to a smaller size + * than currently occupied. + */ +int ossl_quic_rstream_resize_rbuf(QUIC_RSTREAM *qrs, size_t rbuf_size); + +/* + * Sets flag to cleanse the buffered data when user reads it. + */ +void ossl_quic_rstream_set_cleanse(QUIC_RSTREAM *qrs, int cleanse); +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream_map.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream_map.h new file mode 100644 index 00000000..ae749061 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_stream_map.h @@ -0,0 +1,878 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_STREAM_MAP_H +# define OSSL_INTERNAL_QUIC_STREAM_MAP_H +# pragma once + +# include "internal/e_os.h" +# include "internal/time.h" +# include "internal/common.h" +# include "internal/quic_types.h" +# include "internal/quic_stream.h" +# include "internal/quic_fc.h" +# include + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Stream + * =========== + * + * Logical QUIC stream composing all relevant send and receive components. + */ +typedef struct quic_stream_st QUIC_STREAM; + +typedef struct quic_stream_list_node_st QUIC_STREAM_LIST_NODE; + +struct quic_stream_list_node_st { + QUIC_STREAM_LIST_NODE *prev, *next; +}; + +/* + * QUIC Send Stream States + * ----------------------- + * + * These correspond to the states defined in RFC 9000 s. 3.1, with the + * exception of the NONE state which represents the absence of a send stream + * part. + * + * Invariants in each state are noted in comments below. In particular, once all + * data has been acknowledged received, or we have reset the stream, we don't + * need to keep the QUIC_SSTREAM and data buffers around. Of course, we also + * don't have a QUIC_SSTREAM on a receive-only stream. + */ +#define QUIC_SSTREAM_STATE_NONE 0 /* --- sstream == NULL */ +#define QUIC_SSTREAM_STATE_READY 1 /* \ */ +#define QUIC_SSTREAM_STATE_SEND 2 /* |-- sstream != NULL */ +#define QUIC_SSTREAM_STATE_DATA_SENT 3 /* / */ +#define QUIC_SSTREAM_STATE_DATA_RECVD 4 /* \ */ +#define QUIC_SSTREAM_STATE_RESET_SENT 5 /* |-- sstream == NULL */ +#define QUIC_SSTREAM_STATE_RESET_RECVD 6 /* / */ + +/* + * QUIC Receive Stream States + * -------------------------- + * + * These correspond to the states defined in RFC 9000 s. 3.2, with the exception + * of the NONE state which represents the absence of a receive stream part. + * + * Invariants in each state are noted in comments below. In particular, once all + * data has been read by the application, we don't need to keep the QUIC_RSTREAM + * and data buffers around. If the receive part is instead reset before it is + * finished, we also don't need to keep the QUIC_RSTREAM around. Finally, we + * don't need a QUIC_RSTREAM on a send-only stream. + */ +#define QUIC_RSTREAM_STATE_NONE 0 /* --- rstream == NULL */ +#define QUIC_RSTREAM_STATE_RECV 1 /* \ */ +#define QUIC_RSTREAM_STATE_SIZE_KNOWN 2 /* |-- rstream != NULL */ +#define QUIC_RSTREAM_STATE_DATA_RECVD 3 /* / */ +#define QUIC_RSTREAM_STATE_DATA_READ 4 /* \ */ +#define QUIC_RSTREAM_STATE_RESET_RECVD 5 /* |-- rstream == NULL */ +#define QUIC_RSTREAM_STATE_RESET_READ 6 /* / */ + +struct quic_stream_st { + QUIC_STREAM_LIST_NODE active_node; /* for use by QUIC_STREAM_MAP */ + QUIC_STREAM_LIST_NODE accept_node; /* accept queue of remotely-created streams */ + QUIC_STREAM_LIST_NODE ready_for_gc_node; /* queue of streams now ready for GC */ + + /* Temporary link used by TXP. */ + QUIC_STREAM *txp_next; + + /* + * QUIC Stream ID. Do not assume that this encodes a type as this is a + * version-specific property and may change between QUIC versions; instead, + * use the type field. + */ + uint64_t id; + + /* + * Application Error Code (AEC) used for STOP_SENDING frame. + * This is only valid if stop_sending is 1. + */ + uint64_t stop_sending_aec; + + /* + * Application Error Code (AEC) used for RESET_STREAM frame. + * This is only valid if reset_stream is 1. + */ + uint64_t reset_stream_aec; + + /* + * Application Error Code (AEC) for incoming STOP_SENDING frame. + * This is only valid if peer_stop_sending is 1. + */ + uint64_t peer_stop_sending_aec; + + /* + * Application Error Code (AEC) for incoming RESET_STREAM frame. + * This is only valid if peer_reset_stream is 1. + */ + uint64_t peer_reset_stream_aec; + + /* Temporary value used by TXP. */ + uint64_t txp_txfc_new_credit_consumed; + + /* + * The final size of the send stream. Although this information can be + * discerned from a QUIC_SSTREAM, it is stored separately as we need to keep + * track of this even if we have thrown away the QUIC_SSTREAM. Use + * ossl_quic_stream_send_get_final_size to determine if this contain a + * valid value or if there is no final size yet for a sending part. + * + * For the receive part, the final size is tracked by the stream-level RXFC; + * use ossl_quic_stream_recv_get_final_size or + * ossl_quic_rxfc_get_final_size. + */ + uint64_t send_final_size; + + /* + * Send stream part and receive stream part buffer management objects. + * + * DO NOT test these pointers (sstream, rstream) for NULL. Determine the + * state of the send or receive stream part first using the appropriate + * function; then the invariant of that state guarantees that sstream or + * rstream either is or is not NULL respectively, therefore there is no + * valid use case for testing these pointers for NULL. In particular, a + * stream with a send part can still have sstream as NULL, and a stream with + * a receive part can still have rstream as NULL. QUIC_SSTREAM and + * QUIC_RSTREAM are stream buffer resource management objects which exist + * only when they need to for buffer management purposes. The existence or + * non-existence of a QUIC_SSTREAM or QUIC_RSTREAM object does not + * correspond with whether a stream's respective send or receive part + * logically exists or not. + */ + QUIC_SSTREAM *sstream; /* NULL if RX-only */ + QUIC_RSTREAM *rstream; /* NULL if TX only */ + + /* Stream-level flow control managers. */ + QUIC_TXFC txfc; /* NULL if RX-only */ + QUIC_RXFC rxfc; /* NULL if TX-only */ + + unsigned int type : 8; /* QUIC_STREAM_INITIATOR_*, QUIC_STREAM_DIR_* */ + + unsigned int send_state : 8; /* QUIC_SSTREAM_STATE_* */ + unsigned int recv_state : 8; /* QUIC_RSTREAM_STATE_* */ + + /* 1 iff this QUIC_STREAM is on the active queue (invariant). */ + unsigned int active : 1; + + /* + * This is a copy of the QUIC connection as_server value, indicating + * whether we are locally operating as a server or not. Having this + * significantly simplifies stream type determination relative to our + * perspective. It never changes after a QUIC_STREAM is created and is the + * same for all QUIC_STREAMS under a QUIC_STREAM_MAP. + */ + unsigned int as_server : 1; + + /* + * Has STOP_SENDING been requested (by us)? Note that this is not the same + * as want_stop_sending below, as a STOP_SENDING frame may already have been + * sent and fully acknowledged. + */ + unsigned int stop_sending : 1; + + /* + * Has RESET_STREAM been requested (by us)? Works identically to + * STOP_SENDING for transmission purposes. + */ + /* Has our peer sent a STOP_SENDING frame? */ + unsigned int peer_stop_sending : 1; + + /* Temporary flags used by TXP. */ + unsigned int txp_sent_fc : 1; + unsigned int txp_sent_stop_sending : 1; + unsigned int txp_sent_reset_stream : 1; + unsigned int txp_drained : 1; + unsigned int txp_blocked : 1; + + /* Frame regeneration flags. */ + unsigned int want_max_stream_data : 1; /* used for regen only */ + unsigned int want_stop_sending : 1; /* used for gen or regen */ + unsigned int want_reset_stream : 1; /* used for gen or regen */ + + /* Flags set when frames *we* sent were acknowledged. */ + unsigned int acked_stop_sending : 1; + + /* + * The stream's XSO has been deleted. Pending GC. + * + * Here is how stream deletion works: + * + * - A QUIC_STREAM cannot be deleted until it is neither in the accept + * queue nor has an associated XSO. This condition occurs when and only + * when deleted is true. + * + * - Once this is the case (i.e., no user-facing API object exposing the + * stream), we can delete the stream once we determine that all of our + * protocol obligations requiring us to keep the QUIC_STREAM around have + * been met. + * + * The following frames relate to the streams layer for a specific + * stream: + * + * STREAM + * + * RX Obligations: + * Ignore for a deleted stream. + * + * (This is different from our obligation for a + * locally-initiated stream ID we have not created yet, + * which we must treat as a protocol error. This can be + * distinguished via a simple monotonic counter.) + * + * TX Obligations: + * None, once we've decided to (someday) delete the stream. + * + * STOP_SENDING + * + * We cannot delete the stream until we have finished informing + * the peer that we are not going to be listening to it + * anymore. + * + * RX Obligations: + * When we delete a stream we must have already had a FIN + * or RESET_STREAM we transmitted acknowledged by the peer. + * Thus we can ignore STOP_SENDING frames for deleted + * streams (if they occur, they are probably just + * retransmissions). + * + * TX Obligations: + * _Acknowledged_ receipt of a STOP_SENDING frame by the + * peer (unless the peer's send part has already FIN'd). + * + * RESET_STREAM + * + * We cannot delete the stream until we have finished informing + * the peer that we are not going to be transmitting on it + * anymore. + * + * RX Obligations: + * This indicates the peer is not going to send any more + * data on the stream. We don't need to care about this + * since once a stream is marked for deletion we don't care + * about any data it does send. We can ignore this for + * deleted streams. The important criterion is that the + * peer has been successfully delivered our STOP_SENDING + * frame. + * + * TX Obligations: + * _Acknowledged_ receipt of a RESET_STREAM frame or FIN by + * the peer. + * + * MAX_STREAM_DATA + * + * RX Obligations: + * Ignore. Since we are not going to be sending any more + * data on a stream once it has been marked for deletion, + * we don't need to care about flow control information. + * + * TX Obligations: + * None. + * + * In other words, our protocol obligation is simply: + * + * - either: + * - the peer has acknowledged receipt of a STOP_SENDING frame sent + * by us; -or- + * - we have received a FIN and all preceding segments from the peer + * + * [NOTE: The actual criterion required here is simply 'we have + * received a FIN from the peer'. However, due to reordering and + * retransmissions we might subsequently receive non-FIN segments + * out of order. The FIN means we know the peer will stop + * transmitting on the stream at *some* point, but by sending + * STOP_SENDING we can avoid these needless retransmissions we + * will just ignore anyway. In actuality we could just handle all + * cases by sending a STOP_SENDING. The strategy we choose is to + * only avoid sending a STOP_SENDING and rely on a received FIN + * when we have received all preceding data, as this makes it + * reasonably certain no benefit would be gained by sending + * STOP_SENDING.] + * + * TODO(QUIC FUTURE): Implement the latter case (currently we + just always do STOP_SENDING). + * + * and; + * + * - we have drained our send stream (for a finished send stream) + * and got acknowledgement all parts of it including the FIN, or + * sent a RESET_STREAM frame and got acknowledgement of that frame. + * + * Once these conditions are met, we can GC the QUIC_STREAM. + * + */ + unsigned int deleted : 1; + /* Set to 1 once the above conditions are actually met. */ + unsigned int ready_for_gc : 1; + /* Set to 1 if this is currently counted in the shutdown flush stream count. */ + unsigned int shutdown_flush : 1; +}; + +#define QUIC_STREAM_INITIATOR_CLIENT 0 +#define QUIC_STREAM_INITIATOR_SERVER 1 +#define QUIC_STREAM_INITIATOR_MASK 1 + +#define QUIC_STREAM_DIR_BIDI 0 +#define QUIC_STREAM_DIR_UNI 2 +#define QUIC_STREAM_DIR_MASK 2 + +void ossl_quic_stream_check(const QUIC_STREAM *s); + +/* + * Returns 1 if the QUIC_STREAM was initiated by the endpoint with the server + * role. + */ +static ossl_inline ossl_unused int ossl_quic_stream_is_server_init(const QUIC_STREAM *s) +{ + return (s->type & QUIC_STREAM_INITIATOR_MASK) == QUIC_STREAM_INITIATOR_SERVER; +} + +/* + * Returns 1 if the QUIC_STREAM is bidirectional and 0 if it is unidirectional. + */ +static ossl_inline ossl_unused int ossl_quic_stream_is_bidi(const QUIC_STREAM *s) +{ + return (s->type & QUIC_STREAM_DIR_MASK) == QUIC_STREAM_DIR_BIDI; +} + +/* Returns 1 if the QUIC_STREAM was locally initiated. */ +static ossl_inline ossl_unused int ossl_quic_stream_is_local_init(const QUIC_STREAM *s) +{ + return ossl_quic_stream_is_server_init(s) == s->as_server; +} + +/* + * Returns 1 if the QUIC_STREAM has a sending part, based on its stream type. + * + * Do NOT use (s->sstream != NULL) to test this; use this function. Note that + * even if this function returns 1, s->sstream might be NULL if the QUIC_SSTREAM + * has been deemed no longer needed, for example due to a RESET_STREAM. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_send(const QUIC_STREAM *s) +{ + return s->send_state != QUIC_SSTREAM_STATE_NONE; +} + +/* + * Returns 1 if the QUIC_STREAM has a receiving part, based on its stream type. + * + * Do NOT use (s->rstream != NULL) to test this; use this function. Note that + * even if this function returns 1, s->rstream might be NULL if the QUIC_RSTREAM + * has been deemed no longer needed, for example if the receive stream is + * completely finished with. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_recv(const QUIC_STREAM *s) +{ + return s->recv_state != QUIC_RSTREAM_STATE_NONE; +} + +/* + * Returns 1 if the QUIC_STREAM has a QUIC_SSTREAM send buffer associated with + * it. If this returns 1, s->sstream is guaranteed to be non-NULL. The converse + * is not necessarily true; erasure of a send stream buffer which is no longer + * required is an optimisation which the QSM may, but is not obliged, to + * perform. + * + * This call should be used where it is desired to do something with the send + * stream buffer but there is no more specific send state restriction which is + * applicable. + * + * Note: This does NOT indicate whether it is suitable to allow an application + * to append to the buffer. DATA_SENT indicates all data (including FIN) has + * been *sent*; the absence of DATA_SENT does not mean a FIN has not been queued + * (meaning no more application data can be appended). This is enforced by + * QUIC_SSTREAM. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_send_buffer(const QUIC_STREAM *s) +{ + switch (s->send_state) { + case QUIC_SSTREAM_STATE_READY: + case QUIC_SSTREAM_STATE_SEND: + case QUIC_SSTREAM_STATE_DATA_SENT: + return 1; + default: + return 0; + } +} + +/* + * Returns 1 if the QUIC_STREAM has a sending part which is in one of the reset + * states. + */ +static ossl_inline ossl_unused int ossl_quic_stream_send_is_reset(const QUIC_STREAM *s) +{ + return s->send_state == QUIC_SSTREAM_STATE_RESET_SENT + || s->send_state == QUIC_SSTREAM_STATE_RESET_RECVD; +} + +/* + * Returns 1 if the QUIC_STREAM has a QUIC_RSTREAM receive buffer associated + * with it. If this returns 1, s->rstream is guaranteed to be non-NULL. The + * converse is not necessarily true; erasure of a receive stream buffer which is + * no longer required is an optimisation which the QSM may, but is not obliged, + * to perform. + * + * This call should be used where it is desired to do something with the receive + * stream buffer but there is no more specific receive state restriction which is + * applicable. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_recv_buffer(const QUIC_STREAM *s) +{ + switch (s->recv_state) { + case QUIC_RSTREAM_STATE_RECV: + case QUIC_RSTREAM_STATE_SIZE_KNOWN: + case QUIC_RSTREAM_STATE_DATA_RECVD: + return 1; + default: + return 0; + } +} + +/* + * Returns 1 if the QUIC_STREAM has a receiving part which is in one of the + * reset states. + */ +static ossl_inline ossl_unused int ossl_quic_stream_recv_is_reset(const QUIC_STREAM *s) +{ + return s->recv_state == QUIC_RSTREAM_STATE_RESET_RECVD + || s->recv_state == QUIC_RSTREAM_STATE_RESET_READ; +} + +/* + * Returns 1 if the stream has a send part and that part has a final size. + * + * If final_size is non-NULL, *final_size is the final size (on success) or an + * undefined value otherwise. + */ +static ossl_inline ossl_unused int ossl_quic_stream_send_get_final_size(const QUIC_STREAM *s, + uint64_t *final_size) +{ + switch (s->send_state) { + default: + case QUIC_SSTREAM_STATE_NONE: + return 0; + case QUIC_SSTREAM_STATE_SEND: + /* + * SEND may or may not have had a FIN - even if we have a FIN we do not + * move to DATA_SENT until we have actually sent all the data. So + * ask the QUIC_SSTREAM. + */ + return ossl_quic_sstream_get_final_size(s->sstream, final_size); + case QUIC_SSTREAM_STATE_DATA_SENT: + case QUIC_SSTREAM_STATE_DATA_RECVD: + case QUIC_SSTREAM_STATE_RESET_SENT: + case QUIC_SSTREAM_STATE_RESET_RECVD: + if (final_size != NULL) + *final_size = s->send_final_size; + return 1; + } +} + +/* + * Returns 1 if the stream has a receive part and that part has a final size. + * + * If final_size is non-NULL, *final_size is the final size (on success) or an + * undefined value otherwise. + */ +static ossl_inline ossl_unused int ossl_quic_stream_recv_get_final_size(const QUIC_STREAM *s, + uint64_t *final_size) +{ + switch (s->recv_state) { + default: + case QUIC_RSTREAM_STATE_NONE: + case QUIC_RSTREAM_STATE_RECV: + return 0; + + case QUIC_RSTREAM_STATE_SIZE_KNOWN: + case QUIC_RSTREAM_STATE_DATA_RECVD: + case QUIC_RSTREAM_STATE_DATA_READ: + case QUIC_RSTREAM_STATE_RESET_RECVD: + case QUIC_RSTREAM_STATE_RESET_READ: + if (!ossl_assert(ossl_quic_rxfc_get_final_size(&s->rxfc, final_size))) + return 0; + + return 1; + } +} + +/* + * QUIC Stream Map + * =============== + * + * The QUIC stream map: + * + * - maps stream IDs to QUIC_STREAM objects; + * - tracks which streams are 'active' (currently have data for transmission); + * - allows iteration over the active streams only. + * + */ +typedef struct quic_stream_map_st { + LHASH_OF(QUIC_STREAM) *map; + QUIC_STREAM_LIST_NODE active_list; + QUIC_STREAM_LIST_NODE accept_list; + QUIC_STREAM_LIST_NODE ready_for_gc_list; + size_t rr_stepping, rr_counter; + size_t num_accept, num_shutdown_flush; + QUIC_STREAM *rr_cur; + uint64_t (*get_stream_limit_cb)(int uni, void *arg); + void *get_stream_limit_cb_arg; + QUIC_RXFC *max_streams_bidi_rxfc; + QUIC_RXFC *max_streams_uni_rxfc; + int is_server; +} QUIC_STREAM_MAP; + +/* + * get_stream_limit is a callback which is called to retrieve the current stream + * limit for streams created by us. This mechanism is not used for + * peer-initiated streams. If a stream's stream ID is x, a stream is allowed if + * (x >> 2) < returned limit value; i.e., the returned value is exclusive. + * + * If uni is 1, get the limit for locally-initiated unidirectional streams, else + * get the limit for locally-initiated bidirectional streams. + * + * If the callback is NULL, stream limiting is not applied. + * Stream limiting is used to determine if frames can currently be produced for + * a stream. + */ +int ossl_quic_stream_map_init(QUIC_STREAM_MAP *qsm, + uint64_t (*get_stream_limit_cb)(int uni, void *arg), + void *get_stream_limit_cb_arg, + QUIC_RXFC *max_streams_bidi_rxfc, + QUIC_RXFC *max_streams_uni_rxfc, + int is_server); + +/* + * Any streams still in the map will be released as though + * ossl_quic_stream_map_release was called on them. + */ +void ossl_quic_stream_map_cleanup(QUIC_STREAM_MAP *qsm); + +/* + * Allocate a new stream. type is a combination of one QUIC_STREAM_INITIATOR_* + * value and one QUIC_STREAM_DIR_* value. Note that clients can e.g. allocate + * server-initiated streams as they will need to allocate a QUIC_STREAM + * structure to track any stream created by the server, etc. + * + * stream_id must be a valid value. Returns NULL if a stream already exists + * with the given ID. + */ +QUIC_STREAM *ossl_quic_stream_map_alloc(QUIC_STREAM_MAP *qsm, + uint64_t stream_id, + int type); + +/* + * Releases a stream object. Note that this must only be done once the teardown + * process is entirely complete and the object will never be referenced again. + */ +void ossl_quic_stream_map_release(QUIC_STREAM_MAP *qsm, QUIC_STREAM *stream); + +/* + * Calls visit_cb() for each stream in the map. visit_cb_arg is an opaque + * argument which is passed through. + */ +void ossl_quic_stream_map_visit(QUIC_STREAM_MAP *qsm, + void (*visit_cb)(QUIC_STREAM *stream, void *arg), + void *visit_cb_arg); + +/* + * Retrieves a stream by stream ID. Returns NULL if it does not exist. + */ +QUIC_STREAM *ossl_quic_stream_map_get_by_id(QUIC_STREAM_MAP *qsm, + uint64_t stream_id); + +/* + * Marks the given stream as active or inactive based on its state. Idempotent. + * + * When a stream is marked active, it becomes available in the iteration list, + * and when a stream is marked inactive, it no longer appears in the iteration + * list. + * + * Calling this function invalidates any iterator currently pointing at the + * given stream object, but iterators not currently pointing at the given stream + * object are not invalidated. + */ +void ossl_quic_stream_map_update_state(QUIC_STREAM_MAP *qsm, QUIC_STREAM *s); + +/* + * Sets the RR stepping value, n. The RR rotation will be advanced every n + * packets. The default value is 1. + */ +void ossl_quic_stream_map_set_rr_stepping(QUIC_STREAM_MAP *qsm, size_t stepping); + +/* + * Returns 1 if the stream ordinal given is allowed by the current stream count + * flow control limit, assuming a locally initiated stream of a type described + * by is_uni. + * + * Note that stream_ordinal is a stream ordinal, not a stream ID. + */ +int ossl_quic_stream_map_is_local_allowed_by_stream_limit(QUIC_STREAM_MAP *qsm, + uint64_t stream_ordinal, + int is_uni); + +/* + * Stream Send Part + * ================ + */ + +/* + * Ensures that the sending part has transitioned out of the READY state (i.e., + * to SEND, or a subsequent state). This function is named as it is because, + * while on paper the distinction between READY and SEND is whether we have + * started transmitting application data, in practice the meaningful distinction + * between the two states is whether we have allocated a stream ID to the stream + * or not. QUIC permits us to defer stream ID allocation until first STREAM (or + * STREAM_DATA_BLOCKED) frame transmission for locally-initiated streams. + * + * Our implementation does not currently do this and we allocate stream IDs up + * front, however we may revisit this in the future. Calling this represents a + * demand for a stream ID by the caller and ensures one has been allocated to + * the stream, and causes us to transition to SEND if we are still in the READY + * state. + * + * Returns 0 if there is no send part (caller error) and 1 otherwise. + */ +int ossl_quic_stream_map_ensure_send_part_id(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from SEND to the DATA_SENT state. Note that this is NOT the same + * as the point in time at which the final size of the stream becomes known + * (i.e., the time at which ossl_quic_sstream_fin()) is called as it occurs when + * we have SENT all data on a given stream send part, not merely buffered it. + * Note that this transition is NOT reversed in the event of some of that data + * being lost. + * + * Returns 1 if the state transition was successfully taken. Returns 0 if there + * is no send part (caller error) or if the state transition cannot be taken + * because the send part is not in the SEND state. + */ +int ossl_quic_stream_map_notify_all_data_sent(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from the DATA_SENT to DATA_RECVD state; should be called + * when all transmitted stream data is ACKed by the peer. + * + * Returns 1 if the state transition was successfully taken. Returns 0 if there + * is no send part (caller error) or the state transition cannot be taken + * because the send part is not in the DATA_SENT state. Because + * ossl_quic_stream_map_notify_all_data_sent() should always be called prior to + * this function, the send state must already be in DATA_SENT in order for this + * function to succeed. + */ +int ossl_quic_stream_map_notify_totally_acked(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Resets the sending part of a stream. This is a transition from the READY, + * SEND or DATA_SENT send stream states to the RESET_SENT state. + * + * This function returns 1 if the transition is taken (i.e., if the send stream + * part was in one of the states above), or if it is already in the RESET_SENT + * state (idempotent operation), or if it has reached the RESET_RECVD state. + * + * It returns 0 if in the DATA_RECVD state, as a send stream cannot be reset + * in this state. It also returns 0 if there is no send part (caller error). + */ +int ossl_quic_stream_map_reset_stream_send_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t aec); + +/* + * Transitions from the RESET_SENT to the RESET_RECVD state. This should be + * called when a sent RESET_STREAM frame has been acknowledged by the peer. + * + * This function returns 1 if the transition is taken (i.e., if the send stream + * part was in one of the states above) or if it is already in the RESET_RECVD + * state (idempotent operation). + * + * It returns 0 if not in the RESET_SENT or RESET_RECVD states, as this function + * should only be called after we have already sent a RESET_STREAM frame and + * entered the RESET_SENT state. It also returns 0 if there is no send part + * (caller error). + */ +int ossl_quic_stream_map_notify_reset_stream_acked(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + + +/* + * Stream Receive Part + * =================== + */ + +/* + * Transitions from the RECV receive stream state to the SIZE_KNOWN state. This + * should be called once a STREAM frame is received for the stream with the FIN + * bit set. final_size should be the final size of the stream in bytes. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_size_known_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t final_size); + +/* + * Transitions from the SIZE_KNOWN receive stream state to the DATA_RECVD state. + * This should be called once all data for a receive stream is received. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_totally_received(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from the DATA_RECVD receive stream state to the DATA_READ state. + * This should be called once all data for a receive stream is read by the + * application. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_totally_read(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from the RECV, SIZE_KNOWN or DATA_RECVD receive stream state to + * the RESET_RECVD state. This should be called on RESET_STREAM. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_reset_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t app_error_code, + uint64_t final_size); + +/* + * Transitions from the RESET_RECVD receive stream state to the RESET_READ + * receive stream state. This should be called when the application is notified + * of a stream reset. + */ +int ossl_quic_stream_map_notify_app_read_reset_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Marks the receiving part of a stream for STOP_SENDING. This is orthogonal to + * receive stream state as it does not affect it directly. + * + * Returns 1 if the receiving part of a stream was not already marked for + * STOP_SENDING. + * Returns 0 otherwise, which need not be considered an error. + */ +int ossl_quic_stream_map_stop_sending_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t aec); + +/* + * Marks the stream as wanting a STOP_SENDING frame transmitted. It is not valid + * to call this if ossl_quic_stream_map_stop_sending_recv_part() has not been + * called. For TXP use. + */ +int ossl_quic_stream_map_schedule_stop_sending(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + + +/* + * Accept Queue Management + * ======================= + */ + +/* + * Adds a stream to the accept queue. + */ +void ossl_quic_stream_map_push_accept_queue(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *s); + +/* + * Returns the next item to be popped from the accept queue, or NULL if it is + * empty. + */ +QUIC_STREAM *ossl_quic_stream_map_peek_accept_queue(QUIC_STREAM_MAP *qsm); + +/* + * Removes a stream from the accept queue. rtt is the estimated connection RTT. + * The stream is retired for the purposes of MAX_STREAMS RXFC. + * + * Precondition: s is in the accept queue. + */ +void ossl_quic_stream_map_remove_from_accept_queue(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *s, + OSSL_TIME rtt); + +/* Returns the length of the accept queue. */ +size_t ossl_quic_stream_map_get_accept_queue_len(QUIC_STREAM_MAP *qsm); + +/* + * Shutdown Flush and GC + * ===================== + */ + +/* + * Delete streams ready for GC. Pointers to those QUIC_STREAM objects become + * invalid. + */ +void ossl_quic_stream_map_gc(QUIC_STREAM_MAP *qsm); + +/* + * Begins shutdown stream flush triage. Analyses all streams, including deleted + * but not yet GC'd streams, to determine if we should wait for that stream to + * be fully flushed before shutdown. After calling this, call + * ossl_quic_stream_map_is_shutdown_flush_finished() to determine if all + * shutdown flush eligible streams have been flushed. + */ +void ossl_quic_stream_map_begin_shutdown_flush(QUIC_STREAM_MAP *qsm); + +/* + * Returns 1 if all shutdown flush eligible streams have finished flushing, + * or if ossl_quic_stream_map_begin_shutdown_flush() has not been called. + */ +int ossl_quic_stream_map_is_shutdown_flush_finished(QUIC_STREAM_MAP *qsm); + +/* + * QUIC Stream Iterator + * ==================== + * + * Allows the current set of active streams to be walked using a RR-based + * algorithm. Each time ossl_quic_stream_iter_init is called, the RR algorithm + * is stepped. The RR algorithm rotates the iteration order such that the next + * active stream is returned first after n calls to ossl_quic_stream_iter_init, + * where n is the stepping value configured via + * ossl_quic_stream_map_set_rr_stepping. + * + * Suppose there are three active streams and the configured stepping is n: + * + * Iteration 0n: [Stream 1] [Stream 2] [Stream 3] + * Iteration 1n: [Stream 2] [Stream 3] [Stream 1] + * Iteration 2n: [Stream 3] [Stream 1] [Stream 2] + * + */ +typedef struct quic_stream_iter_st { + QUIC_STREAM_MAP *qsm; + QUIC_STREAM *first_stream, *stream; +} QUIC_STREAM_ITER; + +/* + * Initialise an iterator, advancing the RR algorithm as necessary (if + * advance_rr is 1). After calling this, it->stream will be the first stream in + * the iteration sequence, or NULL if there are no active streams. + */ +void ossl_quic_stream_iter_init(QUIC_STREAM_ITER *it, QUIC_STREAM_MAP *qsm, + int advance_rr); + +/* + * Advances to next stream in iteration sequence. You do not need to call this + * immediately after calling ossl_quic_stream_iter_init(). If the end of the + * list is reached, it->stream will be NULL after calling this. + */ +void ossl_quic_stream_iter_next(QUIC_STREAM_ITER *it); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_thread_assist.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_thread_assist.h new file mode 100644 index 00000000..592c2ffa --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_thread_assist.h @@ -0,0 +1,102 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_THREAD_ASSIST_H +# define OSSL_QUIC_THREAD_ASSIST_H + +# include +# include "internal/thread.h" +# include "internal/time.h" + +# if defined(OPENSSL_NO_QUIC) || defined(OPENSSL_NO_THREAD_POOL) +# define OPENSSL_NO_QUIC_THREAD_ASSIST +# endif + +# ifndef OPENSSL_NO_QUIC_THREAD_ASSIST + +/* + * QUIC Thread Assisted Functionality + * ================================== + * + * Where OS threading support is available, QUIC can optionally support a thread + * assisted mode of operation. The purpose of this mode of operation is to + * ensure that assorted timeout events which QUIC expects to be handled in a + * timely manner can be handled without the application needing to ensure that + * SSL_tick() is called on time. This is not needed if the application always + * has a call blocking to SSL_read() or SSL_write() (or another I/O function) on + * a QUIC SSL object, but if the application goes for long periods of time + * without making any such call to a QUIC SSL object, libssl cannot ordinarily + * guarantee that QUIC timeout events will be serviced in a timely fashion. + * Thread assisted mode is therefore of use to applications which do not always + * have an ongoing call to an I/O function on a QUIC SSL object but also do not + * want to have to arrange periodic ticking. + * + * A consequence of this is that the intrusiveness of thread assisted mode upon + * the general architecture of our QUIC engine is actually fairly limited and + * amounts to an automatic ticking of the QUIC engine when timeouts expire, + * synchronised correctly with an application's own threads using locking. + */ +typedef struct quic_thread_assist_st { + QUIC_CHANNEL *ch; + CRYPTO_CONDVAR *cv; + CRYPTO_THREAD *t; + int teardown, joined; + OSSL_TIME (*now_cb)(void *arg); + void *now_cb_arg; +} QUIC_THREAD_ASSIST; + +/* + * Initialise the thread assist object. The channel must have a valid mutex + * configured on it which will be retrieved automatically. It is assumed that + * the mutex is currently held when this function is called. This function does + * not affect the state of the mutex. + */ +int ossl_quic_thread_assist_init_start(QUIC_THREAD_ASSIST *qta, + QUIC_CHANNEL *ch, + OSSL_TIME (*now_cb)(void *arg), + void *now_cb_arg); + +/* + * Request the thread assist helper to begin stopping the assist thread. This + * returns before the teardown is complete. Idempotent; multiple calls to this + * function are inconsequential. + * + * Precondition: channel mutex must be held (unchecked) + */ +int ossl_quic_thread_assist_stop_async(QUIC_THREAD_ASSIST *qta); + +/* + * Wait until the thread assist helper is torn down. This automatically implies + * the effects of ossl_quic_thread_assist_stop_async(). Returns immediately + * if the teardown has already completed. + * + * Precondition: channel mutex must be held (unchecked) + */ +int ossl_quic_thread_assist_wait_stopped(QUIC_THREAD_ASSIST *qta); + +/* + * Deallocates state associated with the thread assist helper. + * ossl_quic_thread_assist_wait_stopped() must have returned successfully before + * calling this. It does not matter whether the channel mutex is held or not. + * + * Precondition: ossl_quic_thread_assist_wait_stopped() has returned 1 + * (asserted) + */ +int ossl_quic_thread_assist_cleanup(QUIC_THREAD_ASSIST *qta); + +/* + * Must be called to notify the assist thread if the channel deadline changes. + * + * Precondition: channel mutex must be held (unchecked) + */ +int ossl_quic_thread_assist_notify_deadline_changed(QUIC_THREAD_ASSIST *qta); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tls.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tls.h new file mode 100644 index 00000000..0e4a9d33 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tls.h @@ -0,0 +1,106 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TLS_H +# define OSSL_QUIC_TLS_H + +# include +# include "internal/quic_stream.h" + + +typedef struct quic_tls_st QUIC_TLS; + +typedef struct quic_tls_args_st { + /* + * The "inner" SSL object for the QUIC Connection. Contains an + * SSL_CONNECTION + */ + SSL *s; + + /* + * Called to send data on the crypto stream. We use a callback rather than + * passing the crypto stream QUIC_SSTREAM directly because this lets the CSM + * dynamically select the correct outgoing crypto stream based on the + * current EL. + */ + int (*crypto_send_cb)(const unsigned char *buf, size_t buf_len, + size_t *consumed, void *arg); + void *crypto_send_cb_arg; + + /* + * Call to receive crypto stream data. A pointer to the underlying buffer + * is provided, and subsequently released to avoid unnecessary copying of + * data. + */ + int (*crypto_recv_rcd_cb)(const unsigned char **buf, size_t *bytes_read, + void *arg); + void *crypto_recv_rcd_cb_arg; + int (*crypto_release_rcd_cb)(size_t bytes_read, void *arg); + void *crypto_release_rcd_cb_arg; + + + /* Called when a traffic secret is available for a given encryption level. */ + int (*yield_secret_cb)(uint32_t enc_level, int direction /* 0=RX, 1=TX */, + uint32_t suite_id, EVP_MD *md, + const unsigned char *secret, size_t secret_len, + void *arg); + void *yield_secret_cb_arg; + + /* + * Called when we receive transport parameters from the peer. + * + * Note: These parameters are not authenticated until the handshake is + * marked as completed. + */ + int (*got_transport_params_cb)(const unsigned char *params, + size_t params_len, + void *arg); + void *got_transport_params_cb_arg; + + /* + * Called when the handshake has been completed as far as the handshake + * protocol is concerned, meaning that the connection has been + * authenticated. + */ + int (*handshake_complete_cb)(void *arg); + void *handshake_complete_cb_arg; + + /* + * Called when something has gone wrong with the connection as far as the + * handshake layer is concerned, meaning that it should be immediately torn + * down. Note that this may happen at any time, including after a connection + * has been fully established. + */ + int (*alert_cb)(void *arg, unsigned char alert_code); + void *alert_cb_arg; + + /* Set to 1 if we are running in the server role. */ + int is_server; +} QUIC_TLS_ARGS; + +QUIC_TLS *ossl_quic_tls_new(const QUIC_TLS_ARGS *args); + +void ossl_quic_tls_free(QUIC_TLS *qtls); + +/* Advance the state machine */ +int ossl_quic_tls_tick(QUIC_TLS *qtls); + +int ossl_quic_tls_set_transport_params(QUIC_TLS *qtls, + const unsigned char *transport_params, + size_t transport_params_len); + +int ossl_quic_tls_get_error(QUIC_TLS *qtls, + uint64_t *error_code, + const char **error_msg, + ERR_STATE **error_state); + +int ossl_quic_tls_is_cert_request(QUIC_TLS *qtls); +int ossl_quic_tls_has_bad_max_early_data(QUIC_TLS *qtls); + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tserver.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tserver.h new file mode 100644 index 00000000..4f358dd4 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_tserver.h @@ -0,0 +1,220 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TSERVER_H +# define OSSL_QUIC_TSERVER_H + +# include +# include +# include "internal/quic_stream.h" +# include "internal/quic_channel.h" +# include "internal/statem.h" +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Test Server Module + * ======================= + * + * This implements a QUIC test server. Since full QUIC server support is not yet + * implemented this server is limited in features and scope. It exists to + * provide a target for our QUIC client to talk to for testing purposes. + * + * A given QUIC test server instance supports only one client at a time. + * + * Note that this test server is not suitable for production use because it does + * not implement address verification, anti-amplification or retry logic. + */ +typedef struct quic_tserver_st QUIC_TSERVER; + +typedef struct quic_tserver_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + SSL_CTX *ctx; + BIO *net_rbio, *net_wbio; + OSSL_TIME (*now_cb)(void *arg); + void *now_cb_arg; + const unsigned char *alpn; + size_t alpnlen; +} QUIC_TSERVER_ARGS; + +QUIC_TSERVER *ossl_quic_tserver_new(const QUIC_TSERVER_ARGS *args, + const char *certfile, const char *keyfile); + +void ossl_quic_tserver_free(QUIC_TSERVER *srv); + +/* Set mutator callbacks for test framework support */ +int ossl_quic_tserver_set_plain_packet_mutator(QUIC_TSERVER *srv, + ossl_mutate_packet_cb mutatecb, + ossl_finish_mutate_cb finishmutatecb, + void *mutatearg); + +int ossl_quic_tserver_set_handshake_mutator(QUIC_TSERVER *srv, + ossl_statem_mutate_handshake_cb mutate_handshake_cb, + ossl_statem_finish_mutate_handshake_cb finish_mutate_handshake_cb, + void *mutatearg); + +/* Advances the state machine. */ +int ossl_quic_tserver_tick(QUIC_TSERVER *srv); + +/* Returns 1 if we have a (non-terminated) client. */ +int ossl_quic_tserver_is_connected(QUIC_TSERVER *srv); + +/* + * Returns 1 if we have finished the TLS handshake + */ +int ossl_quic_tserver_is_handshake_confirmed(const QUIC_TSERVER *srv); + +/* Returns 1 if the server is in any terminating or terminated state */ +int ossl_quic_tserver_is_term_any(const QUIC_TSERVER *srv); + +const QUIC_TERMINATE_CAUSE * +ossl_quic_tserver_get_terminate_cause(const QUIC_TSERVER *srv); + +/* Returns 1 if the server is in a terminated state */ +int ossl_quic_tserver_is_terminated(const QUIC_TSERVER *srv); + +/* + * Attempts to read from stream 0. Writes the number of bytes read to + * *bytes_read and returns 1 on success. If no bytes are available, 0 is written + * to *bytes_read and 1 is returned (this is considered a success case). + * + * Returns 0 if connection is not currently active. If the receive part of + * the stream has reached the end of stream condition, returns 0; call + * ossl_quic_tserver_has_read_ended() to identify this condition. + */ +int ossl_quic_tserver_read(QUIC_TSERVER *srv, + uint64_t stream_id, + unsigned char *buf, + size_t buf_len, + size_t *bytes_read); + +/* + * Returns 1 if the read part of the stream has ended normally. + */ +int ossl_quic_tserver_has_read_ended(QUIC_TSERVER *srv, uint64_t stream_id); + +/* + * Attempts to write to the given stream. Writes the number of bytes consumed to + * *bytes_written and returns 1 on success. If there is no space currently + * available to write any bytes, 0 is written to *consumed and 1 is returned + * (this is considered a success case). + * + * Note that unlike libssl public APIs, this API always works in a 'partial + * write' mode. + * + * Returns 0 if connection is not currently active. + */ +int ossl_quic_tserver_write(QUIC_TSERVER *srv, + uint64_t stream_id, + const unsigned char *buf, + size_t buf_len, + size_t *bytes_written); + +/* + * Signals normal end of the stream. + */ +int ossl_quic_tserver_conclude(QUIC_TSERVER *srv, uint64_t stream_id); + +/* + * Create a server-initiated stream. The stream ID of the newly + * created stream is written to *stream_id. + */ +int ossl_quic_tserver_stream_new(QUIC_TSERVER *srv, + int is_uni, + uint64_t *stream_id); + +BIO *ossl_quic_tserver_get0_rbio(QUIC_TSERVER *srv); + +SSL_CTX *ossl_quic_tserver_get0_ssl_ctx(QUIC_TSERVER *srv); + +/* + * Returns 1 if the peer has sent a STOP_SENDING frame for a stream. + * app_error_code is written if this returns 1. + */ +int ossl_quic_tserver_stream_has_peer_stop_sending(QUIC_TSERVER *srv, + uint64_t stream_id, + uint64_t *app_error_code); + +/* + * Returns 1 if the peer has sent a RESET_STREAM frame for a stream. + * app_error_code is written if this returns 1. + */ +int ossl_quic_tserver_stream_has_peer_reset_stream(QUIC_TSERVER *srv, + uint64_t stream_id, + uint64_t *app_error_code); + +/* + * Replaces existing local connection ID in the underlying QUIC_CHANNEL. + */ +int ossl_quic_tserver_set_new_local_cid(QUIC_TSERVER *srv, + const QUIC_CONN_ID *conn_id); + +/* + * Returns the stream ID of the next incoming stream, or UINT64_MAX if there + * currently is none. + */ +uint64_t ossl_quic_tserver_pop_incoming_stream(QUIC_TSERVER *srv); + +/* + * Returns 1 if all data sent on the given stream_id has been acked by the peer. + */ +int ossl_quic_tserver_is_stream_totally_acked(QUIC_TSERVER *srv, + uint64_t stream_id); + +/* Returns 1 if we are currently interested in reading data from the network */ +int ossl_quic_tserver_get_net_read_desired(QUIC_TSERVER *srv); + +/* Returns 1 if we are currently interested in writing data to the network */ +int ossl_quic_tserver_get_net_write_desired(QUIC_TSERVER *srv); + +/* Returns the next event deadline */ +OSSL_TIME ossl_quic_tserver_get_deadline(QUIC_TSERVER *srv); + +/* + * Shutdown the QUIC connection. Returns 1 if the connection is terminated and + * 0 otherwise. + */ +int ossl_quic_tserver_shutdown(QUIC_TSERVER *srv, uint64_t app_error_code); + +/* Force generation of an ACK-eliciting packet. */ +int ossl_quic_tserver_ping(QUIC_TSERVER *srv); + +/* Set tracing callback on channel. */ +void ossl_quic_tserver_set_msg_callback(QUIC_TSERVER *srv, + void (*f)(int write_p, int version, + int content_type, + const void *buf, size_t len, + SSL *ssl, void *arg), + void *arg); + +/* + * This is similar to ossl_quic_conn_get_channel; it should be used for test + * instrumentation only and not to bypass QUIC_TSERVER for 'normal' operations. + */ +QUIC_CHANNEL *ossl_quic_tserver_get_channel(QUIC_TSERVER *srv); + +/* Send a TLS new session ticket */ +int ossl_quic_tserver_new_ticket(QUIC_TSERVER *srv); + +/* + * Set the max_early_data value to be sent in NewSessionTickets. Only the + * values 0 and 0xffffffff are valid for use in QUIC. + */ +int ossl_quic_tserver_set_max_early_data(QUIC_TSERVER *srv, + uint32_t max_early_data); + +/* Set the find session callback for getting a server PSK */ +void ossl_quic_tserver_set_psk_find_session_cb(QUIC_TSERVER *srv, + SSL_psk_find_session_cb_func cb); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txp.h new file mode 100644 index 00000000..ae508f23 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txp.h @@ -0,0 +1,209 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TXP_H +# define OSSL_QUIC_TXP_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_record_tx.h" +# include "internal/quic_cfq.h" +# include "internal/quic_txpim.h" +# include "internal/quic_stream.h" +# include "internal/quic_stream_map.h" +# include "internal/quic_fc.h" +# include "internal/bio_addr.h" +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC TX Packetiser + * ================== + */ +typedef struct ossl_quic_tx_packetiser_args_st { + /* Configuration Settings */ + QUIC_CONN_ID cur_scid; /* Current Source Connection ID we use. */ + QUIC_CONN_ID cur_dcid; /* Current Destination Connection ID we use. */ + BIO_ADDR peer; /* Current destination L4 address we use. */ + uint32_t ack_delay_exponent; /* ACK delay exponent used when encoding. */ + + /* Injected Dependencies */ + OSSL_QTX *qtx; /* QUIC Record Layer TX we are using */ + QUIC_TXPIM *txpim; /* QUIC TX'd Packet Information Manager */ + QUIC_CFQ *cfq; /* QUIC Control Frame Queue */ + OSSL_ACKM *ackm; /* QUIC Acknowledgement Manager */ + QUIC_STREAM_MAP *qsm; /* QUIC Streams Map */ + QUIC_TXFC *conn_txfc; /* QUIC Connection-Level TX Flow Controller */ + QUIC_RXFC *conn_rxfc; /* QUIC Connection-Level RX Flow Controller */ + QUIC_RXFC *max_streams_bidi_rxfc; /* QUIC RXFC for MAX_STREAMS generation */ + QUIC_RXFC *max_streams_uni_rxfc; + const OSSL_CC_METHOD *cc_method; /* QUIC Congestion Controller */ + OSSL_CC_DATA *cc_data; /* QUIC Congestion Controller Instance */ + OSSL_TIME (*now)(void *arg); /* Callback to get current time. */ + void *now_arg; + + /* + * Injected dependencies - crypto streams. + * + * Note: There is no crypto stream for the 0-RTT EL. + * crypto[QUIC_PN_SPACE_APP] is the 1-RTT crypto stream. + */ + QUIC_SSTREAM *crypto[QUIC_PN_SPACE_NUM]; + + } OSSL_QUIC_TX_PACKETISER_ARGS; + +typedef struct ossl_quic_tx_packetiser_st OSSL_QUIC_TX_PACKETISER; + +OSSL_QUIC_TX_PACKETISER *ossl_quic_tx_packetiser_new(const OSSL_QUIC_TX_PACKETISER_ARGS *args); + +typedef void (ossl_quic_initial_token_free_fn)(const unsigned char *buf, + size_t buf_len, void *arg); + +void ossl_quic_tx_packetiser_free(OSSL_QUIC_TX_PACKETISER *txp); + +/* + * When in the closing state we need to maintain a count of received bytes + * so that we can limit the number of close connection frames we send. + * Refer RFC 9000 s. 10.2.1 Closing Connection State. + */ +void ossl_quic_tx_packetiser_record_received_closing_bytes( + OSSL_QUIC_TX_PACKETISER *txp, size_t n); + +/* + * Generates a datagram by polling the various ELs to determine if they want to + * generate any frames, and generating a datagram which coalesces packets for + * any ELs which do. + * + * Returns 0 on failure (e.g. allocation error or other errors), 1 otherwise. + * + * *status is filled with status information about the generated packet. + * It is always filled even in case of failure. In particular, packets can be + * sent even if failure is later returned. + * See QUIC_TXP_STATUS for details. + */ +typedef struct quic_txp_status_st { + int sent_ack_eliciting; /* Was an ACK-eliciting packet sent? */ + int sent_handshake; /* Was a Handshake packet sent? */ + size_t sent_pkt; /* Number of packets sent (0 if nothing was sent) */ +} QUIC_TXP_STATUS; + +int ossl_quic_tx_packetiser_generate(OSSL_QUIC_TX_PACKETISER *txp, + QUIC_TXP_STATUS *status); + +/* + * Returns a deadline after which a call to ossl_quic_tx_packetiser_generate() + * might succeed even if it did not previously. This may return + * ossl_time_infinite() if there is no such deadline currently applicable. It + * returns ossl_time_zero() if there is (potentially) more data to be generated + * immediately. The value returned is liable to change after any call to + * ossl_quic_tx_packetiser_generate() (or after ACKM or CC state changes). Note + * that ossl_quic_tx_packetiser_generate() can also start to succeed for other + * non-chronological reasons, such as changes to send stream buffers, etc. + */ +OSSL_TIME ossl_quic_tx_packetiser_get_deadline(OSSL_QUIC_TX_PACKETISER *txp); + +/* + * Set the token used in Initial packets. The callback is called when the buffer + * is no longer needed; for example, when the TXP is freed or when this function + * is called again with a new buffer. Fails returning 0 if the token is too big + * to ever be reasonably encapsulated in an outgoing packet based on our current + * understanding of our PMTU. + */ +int ossl_quic_tx_packetiser_set_initial_token(OSSL_QUIC_TX_PACKETISER *txp, + const unsigned char *token, + size_t token_len, + ossl_quic_initial_token_free_fn *free_cb, + void *free_cb_arg); + +/* Change the DCID the TXP uses to send outgoing packets. */ +int ossl_quic_tx_packetiser_set_cur_dcid(OSSL_QUIC_TX_PACKETISER *txp, + const QUIC_CONN_ID *dcid); + +/* Change the SCID the TXP uses to send outgoing (long) packets. */ +int ossl_quic_tx_packetiser_set_cur_scid(OSSL_QUIC_TX_PACKETISER *txp, + const QUIC_CONN_ID *scid); + +/* + * Change the destination L4 address the TXP uses to send datagrams. Specify + * NULL (or AF_UNSPEC) to disable use of addressed mode. + */ +int ossl_quic_tx_packetiser_set_peer(OSSL_QUIC_TX_PACKETISER *txp, + const BIO_ADDR *peer); + +/* + * Inform the TX packetiser that an EL has been discarded. Idempotent. + * + * This does not inform the QTX as well; the caller must also inform the QTX. + * + * The TXP will no longer reference the crypto[enc_level] QUIC_SSTREAM which was + * provided in the TXP arguments. However, it is the callers responsibility to + * free that QUIC_SSTREAM if desired. + */ +int ossl_quic_tx_packetiser_discard_enc_level(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t enc_level); + +/* + * Informs the TX packetiser that the handshake is complete. The TX packetiser + * will not send 1-RTT application data until the handshake is complete, + * as the authenticity of the peer is not confirmed until the handshake + * complete event occurs. + */ +void ossl_quic_tx_packetiser_notify_handshake_complete(OSSL_QUIC_TX_PACKETISER *txp); + +/* Asks the TXP to generate a HANDSHAKE_DONE frame in the next 1-RTT packet. */ +void ossl_quic_tx_packetiser_schedule_handshake_done(OSSL_QUIC_TX_PACKETISER *txp); + +/* Asks the TXP to ensure the next packet in the given PN space is ACK-eliciting. */ +void ossl_quic_tx_packetiser_schedule_ack_eliciting(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t pn_space); + +/* + * Asks the TXP to ensure an ACK is put in the next packet in the given PN + * space. + */ +void ossl_quic_tx_packetiser_schedule_ack(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t pn_space); + +/* + * Schedules a connection close. *f and f->reason are copied. This operation is + * irreversible and causes all further packets generated by the TXP to contain a + * CONNECTION_CLOSE frame. This function fails if it has already been called + * successfully; the information in *f cannot be changed after the first + * successful call to this function. + */ +int ossl_quic_tx_packetiser_schedule_conn_close(OSSL_QUIC_TX_PACKETISER *txp, + const OSSL_QUIC_FRAME_CONN_CLOSE *f); + +/* Setters for the msg_callback and msg_callback_arg */ +void ossl_quic_tx_packetiser_set_msg_callback(OSSL_QUIC_TX_PACKETISER *txp, + ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_quic_tx_packetiser_set_msg_callback_arg(OSSL_QUIC_TX_PACKETISER *txp, + void *msg_callback_arg); + +/* + * Determines the next PN which will be used for a given PN space. + */ +QUIC_PN ossl_quic_tx_packetiser_get_next_pn(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t pn_space); + +/* + * Sets a callback which is called whenever TXP sends an ACK frame. The callee + * must not modify the ACK frame data. Can be used to snoop on PNs being ACKed. + */ +void ossl_quic_tx_packetiser_set_ack_tx_cb(OSSL_QUIC_TX_PACKETISER *txp, + void (*cb)(const OSSL_QUIC_FRAME_ACK *ack, + uint32_t pn_space, + void *arg), + void *cb_arg); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txpim.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txpim.h new file mode 100644 index 00000000..ed6e3875 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_txpim.h @@ -0,0 +1,133 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TXPIM_H +# define OSSL_QUIC_TXPIM_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_cfq.h" +# include "internal/quic_ackm.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Transmitted Packet Information Manager + * =========================================== + */ +typedef struct quic_txpim_st QUIC_TXPIM; +typedef struct quic_fifd_st QUIC_FIFD; + +typedef struct quic_txpim_pkt_st { + /* ACKM-specific data. Caller should fill this. */ + OSSL_ACKM_TX_PKT ackm_pkt; + + /* Linked list of CFQ items in this packet. */ + QUIC_CFQ_ITEM *retx_head; + + /* Reserved for FIFD use. */ + QUIC_FIFD *fifd; + + /* Regenerate-strategy frames. */ + unsigned int had_handshake_done_frame : 1; + unsigned int had_max_data_frame : 1; + unsigned int had_max_streams_bidi_frame : 1; + unsigned int had_max_streams_uni_frame : 1; + unsigned int had_ack_frame : 1; + unsigned int had_conn_close : 1; + + /* Private data follows. */ +} QUIC_TXPIM_PKT; + +/* Represents a range of bytes in an application or CRYPTO stream. */ +typedef struct quic_txpim_chunk_st { + /* The stream ID, or UINT64_MAX for the CRYPTO stream. */ + uint64_t stream_id; + /* + * The inclusive range of bytes in the stream. Exceptionally, if end < + * start, designates a frame of zero length (used for FIN-only frames). In + * this case end is the number of the final byte (i.e., one less than the + * final size of the stream). + */ + uint64_t start, end; + /* + * Whether a FIN was sent for this stream in the packet. Not valid for + * CRYPTO stream. + */ + unsigned int has_fin : 1; + /* + * If set, a STOP_SENDING frame was sent for this stream ID. (If no data was + * sent for the stream, set end < start.) + */ + unsigned int has_stop_sending : 1; + /* + * If set, a RESET_STREAM frame was sent for this stream ID. (If no data was + * sent for the stream, set end < start.) + */ + unsigned int has_reset_stream : 1; +} QUIC_TXPIM_CHUNK; + +QUIC_TXPIM *ossl_quic_txpim_new(void); + +/* + * Frees the TXPIM. All QUIC_TXPIM_PKTs which have been handed out by the TXPIM + * must be released via a call to ossl_quic_txpim_pkt_release() before calling + * this function. + */ +void ossl_quic_txpim_free(QUIC_TXPIM *txpim); + +/* + * Allocates a new QUIC_TXPIM_PKT structure from the pool. Returns NULL on + * failure. The returned structure is cleared of all data and is in a fresh + * initial state. + */ +QUIC_TXPIM_PKT *ossl_quic_txpim_pkt_alloc(QUIC_TXPIM *txpim); + +/* + * Releases the TXPIM packet, returning it to the pool. + */ +void ossl_quic_txpim_pkt_release(QUIC_TXPIM *txpim, QUIC_TXPIM_PKT *fpkt); + +/* Clears the chunk list of the packet, removing all entries. */ +void ossl_quic_txpim_pkt_clear_chunks(QUIC_TXPIM_PKT *fpkt); + +/* Appends a chunk to the packet. The structure is copied. */ +int ossl_quic_txpim_pkt_append_chunk(QUIC_TXPIM_PKT *fpkt, + const QUIC_TXPIM_CHUNK *chunk); + +/* Adds a CFQ item to the packet by prepending it to the retx_head list. */ +void ossl_quic_txpim_pkt_add_cfq_item(QUIC_TXPIM_PKT *fpkt, + QUIC_CFQ_ITEM *item); + +/* + * Returns a pointer to an array of stream chunk information structures for the + * given packet. The caller must call ossl_quic_txpim_pkt_get_num_chunks() to + * determine the length of this array. The returned pointer is invalidated + * if the chunk list is mutated, for example via a call to + * ossl_quic_txpim_pkt_append_chunk() or ossl_quic_txpim_pkt_clear_chunks(). + * + * The chunks are sorted by (stream_id, start) in ascending order. + */ +const QUIC_TXPIM_CHUNK *ossl_quic_txpim_pkt_get_chunks(const QUIC_TXPIM_PKT *fpkt); + +/* + * Returns the number of entries in the array returned by + * ossl_quic_txpim_pkt_get_chunks(). + */ +size_t ossl_quic_txpim_pkt_get_num_chunks(const QUIC_TXPIM_PKT *fpkt); + +/* + * Returns the number of QUIC_TXPIM_PKTs allocated by the given TXPIM that have + * yet to be returned to the TXPIM. + */ +size_t ossl_quic_txpim_get_in_use(const QUIC_TXPIM *txpim); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_types.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_types.h new file mode 100644 index 00000000..d42164ba --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_types.h @@ -0,0 +1,116 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TYPES_H +# define OSSL_QUIC_TYPES_H + +# include +# include +# include +# include + +# ifndef OPENSSL_NO_QUIC + +/* QUIC encryption levels. */ +enum { + QUIC_ENC_LEVEL_INITIAL = 0, + QUIC_ENC_LEVEL_HANDSHAKE, + QUIC_ENC_LEVEL_0RTT, + QUIC_ENC_LEVEL_1RTT, + QUIC_ENC_LEVEL_NUM /* Must be the ultimate entry */ +}; + +/* QUIC packet number spaces. */ +enum { + QUIC_PN_SPACE_INITIAL = 0, + QUIC_PN_SPACE_HANDSHAKE, + /* New entries must go here, so that QUIC_PN_SPACE_APP is the penultimate */ + QUIC_PN_SPACE_APP, + QUIC_PN_SPACE_NUM /* Must be the ultimate entry */ +}; + +static ossl_unused ossl_inline uint32_t +ossl_quic_enc_level_to_pn_space(uint32_t enc_level) +{ + switch (enc_level) { + case QUIC_ENC_LEVEL_INITIAL: + return QUIC_PN_SPACE_INITIAL; + case QUIC_ENC_LEVEL_HANDSHAKE: + return QUIC_PN_SPACE_HANDSHAKE; + case QUIC_ENC_LEVEL_0RTT: + case QUIC_ENC_LEVEL_1RTT: + return QUIC_PN_SPACE_APP; + default: + assert(0); + return QUIC_PN_SPACE_APP; + } +} + +/* QUIC packet number representation. */ +typedef uint64_t QUIC_PN; +# define QUIC_PN_INVALID UINT64_MAX + +static ossl_unused ossl_inline QUIC_PN ossl_quic_pn_max(QUIC_PN a, QUIC_PN b) +{ + return a > b ? a : b; +} + +static ossl_unused ossl_inline QUIC_PN ossl_quic_pn_min(QUIC_PN a, QUIC_PN b) +{ + return a < b ? a : b; +} + +static ossl_unused ossl_inline int ossl_quic_pn_valid(QUIC_PN pn) +{ + return pn < (((QUIC_PN)1) << 62); +} + +/* QUIC connection ID representation. */ +# define QUIC_MAX_CONN_ID_LEN 20 + +typedef struct quic_conn_id_st { + unsigned char id_len, id[QUIC_MAX_CONN_ID_LEN]; +} QUIC_CONN_ID; + +static ossl_unused ossl_inline int ossl_quic_conn_id_eq(const QUIC_CONN_ID *a, + const QUIC_CONN_ID *b) +{ + if (a->id_len != b->id_len || a->id_len > QUIC_MAX_CONN_ID_LEN) + return 0; + return memcmp(a->id, b->id, a->id_len) == 0; +} + +# define QUIC_MIN_INITIAL_DGRAM_LEN 1200 + +# define QUIC_DEFAULT_ACK_DELAY_EXP 3 +# define QUIC_MAX_ACK_DELAY_EXP 20 + +# define QUIC_DEFAULT_MAX_ACK_DELAY 25 + +# define QUIC_MIN_ACTIVE_CONN_ID_LIMIT 2 + +/* Arbitrary choice of default idle timeout (not an RFC value). */ +# define QUIC_DEFAULT_IDLE_TIMEOUT 30000 + +# define QUIC_STATELESS_RESET_TOKEN_LEN 16 + +typedef struct { + unsigned char token[QUIC_STATELESS_RESET_TOKEN_LEN]; +} QUIC_STATELESS_RESET_TOKEN; + +/* + * An encoded preferred_addr transport parameter cannot be shorter or longer + * than these lengths in bytes. + */ +# define QUIC_MIN_ENCODED_PREFERRED_ADDR_LEN 41 +# define QUIC_MAX_ENCODED_PREFERRED_ADDR_LEN 61 + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_vlint.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_vlint.h new file mode 100644 index 00000000..d4b70b22 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_vlint.h @@ -0,0 +1,127 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_VLINT_H +# define OSSL_INTERNAL_QUIC_VLINT_H +# pragma once + +# include "internal/e_os.h" + +# ifndef OPENSSL_NO_QUIC + +/* The smallest value requiring a 1, 2, 4, or 8-byte representation. */ +#define OSSL_QUIC_VLINT_1B_MIN 0 +#define OSSL_QUIC_VLINT_2B_MIN 64 +#define OSSL_QUIC_VLINT_4B_MIN 16384 +#define OSSL_QUIC_VLINT_8B_MIN 1073741824 + +/* The largest value representable in a given number of bytes. */ +#define OSSL_QUIC_VLINT_1B_MAX (OSSL_QUIC_VLINT_2B_MIN - 1) +#define OSSL_QUIC_VLINT_2B_MAX (OSSL_QUIC_VLINT_4B_MIN - 1) +#define OSSL_QUIC_VLINT_4B_MAX (OSSL_QUIC_VLINT_8B_MIN - 1) +#define OSSL_QUIC_VLINT_8B_MAX (((uint64_t)1 << 62) - 1) + +/* The largest value representable as a variable-length integer. */ +#define OSSL_QUIC_VLINT_MAX OSSL_QUIC_VLINT_8B_MAX + +/* + * Returns the number of bytes needed to encode v in the QUIC variable-length + * integer encoding. + * + * Returns 0 if v exceeds OSSL_QUIC_VLINT_MAX. + */ +static ossl_unused ossl_inline size_t ossl_quic_vlint_encode_len(uint64_t v) +{ + if (v < OSSL_QUIC_VLINT_2B_MIN) + return 1; + + if (v < OSSL_QUIC_VLINT_4B_MIN) + return 2; + + if (v < OSSL_QUIC_VLINT_8B_MIN) + return 4; + + if (v <= OSSL_QUIC_VLINT_MAX) + return 8; + + return 0; +} + +/* + * This function writes a QUIC varable-length encoded integer to buf. + * The smallest usable representation is used. + * + * It is the caller's responsibility to ensure that the buffer is big enough by + * calling ossl_quic_vlint_encode_len(v) before calling this function. + * + * Precondition: buf is at least ossl_quic_vlint_enc_len(v) bytes in size + * (unchecked) + * Precondition: v does not exceed OSSL_QUIC_VLINT_MAX + * (unchecked) + */ +void ossl_quic_vlint_encode(unsigned char *buf, uint64_t v); + +/* + * This function writes a QUIC variable-length encoded integer to buf. The + * specified number of bytes n are used for the encoding, which means that the + * encoded value may take up more space than necessary. + * + * It is the caller's responsibility to ensure that the buffer is of at least n + * bytes, and that v is representable by a n-byte QUIC variable-length integer. + * The representable ranges are: + * + * 1-byte encoding: [0, 2** 6-1] + * 2-byte encoding: [0, 2**14-1] + * 4-byte encoding: [0, 2**30-1] + * 8-byte encoding: [0, 2**62-1] + * + * Precondition: buf is at least n bytes in size (unchecked) + * Precondition: v does not exceed the representable range + * (ossl_quic_vlint_encode_len(v) <= n) (unchecked) + * Precondition: v does not exceed OSSL_QUIC_VLINT_MAX + * (unchecked) + */ +void ossl_quic_vlint_encode_n(unsigned char *buf, uint64_t v, int n); + +/* + * Given the first byte of an encoded QUIC variable-length integer, returns + * the number of bytes comprising the encoded integer, including the first + * byte. + */ +static ossl_unused ossl_inline size_t ossl_quic_vlint_decode_len(uint8_t first_byte) +{ + return 1U << ((first_byte & 0xC0) >> 6); +} + +/* + * Given a buffer containing an encoded QUIC variable-length integer, returns + * the decoded value. The buffer must be of at least + * ossl_quic_vlint_decode_len(buf[0]) bytes in size, and the caller is responsible + * for checking this. + * + * Precondition: buf is at least ossl_quic_vlint_decode_len(buf[0]) bytes in size + * (unchecked) + */ +uint64_t ossl_quic_vlint_decode_unchecked(const unsigned char *buf); + +/* + * Given a buffer buf of buf_len bytes in length, attempts to decode an encoded + * QUIC variable-length integer at the start of the buffer and writes the result + * to *v. If buf_len is inadequate, suggesting a truncated encoded integer, the + * function fails and 0 is returned. Otherwise, returns the number of bytes + * consumed. + * + * Precondition: buf is at least buf_len bytes in size + * Precondition: v (unchecked) + */ +int ossl_quic_vlint_decode(const unsigned char *buf, size_t buf_len, uint64_t *v); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire.h new file mode 100644 index 00000000..cd01feb0 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire.h @@ -0,0 +1,784 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_WIRE_H +# define OSSL_INTERNAL_QUIC_WIRE_H +# pragma once + +# include "internal/e_os.h" +# include "internal/time.h" +# include "internal/quic_types.h" +# include "internal/packet_quic.h" + +# ifndef OPENSSL_NO_QUIC + +# define OSSL_QUIC_FRAME_TYPE_PADDING 0x00 +# define OSSL_QUIC_FRAME_TYPE_PING 0x01 +# define OSSL_QUIC_FRAME_TYPE_ACK_WITHOUT_ECN 0x02 +# define OSSL_QUIC_FRAME_TYPE_ACK_WITH_ECN 0x03 +# define OSSL_QUIC_FRAME_TYPE_RESET_STREAM 0x04 +# define OSSL_QUIC_FRAME_TYPE_STOP_SENDING 0x05 +# define OSSL_QUIC_FRAME_TYPE_CRYPTO 0x06 +# define OSSL_QUIC_FRAME_TYPE_NEW_TOKEN 0x07 +# define OSSL_QUIC_FRAME_TYPE_MAX_DATA 0x10 +# define OSSL_QUIC_FRAME_TYPE_MAX_STREAM_DATA 0x11 +# define OSSL_QUIC_FRAME_TYPE_MAX_STREAMS_BIDI 0x12 +# define OSSL_QUIC_FRAME_TYPE_MAX_STREAMS_UNI 0x13 +# define OSSL_QUIC_FRAME_TYPE_DATA_BLOCKED 0x14 +# define OSSL_QUIC_FRAME_TYPE_STREAM_DATA_BLOCKED 0x15 +# define OSSL_QUIC_FRAME_TYPE_STREAMS_BLOCKED_BIDI 0x16 +# define OSSL_QUIC_FRAME_TYPE_STREAMS_BLOCKED_UNI 0x17 +# define OSSL_QUIC_FRAME_TYPE_NEW_CONN_ID 0x18 +# define OSSL_QUIC_FRAME_TYPE_RETIRE_CONN_ID 0x19 +# define OSSL_QUIC_FRAME_TYPE_PATH_CHALLENGE 0x1A +# define OSSL_QUIC_FRAME_TYPE_PATH_RESPONSE 0x1B +# define OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_TRANSPORT 0x1C +# define OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_APP 0x1D +# define OSSL_QUIC_FRAME_TYPE_HANDSHAKE_DONE 0x1E + +# define OSSL_QUIC_FRAME_FLAG_STREAM_FIN 0x01 +# define OSSL_QUIC_FRAME_FLAG_STREAM_LEN 0x02 +# define OSSL_QUIC_FRAME_FLAG_STREAM_OFF 0x04 +# define OSSL_QUIC_FRAME_FLAG_STREAM_MASK ((uint64_t)0x07) + +/* Low 3 bits of the type contain flags */ +# define OSSL_QUIC_FRAME_TYPE_STREAM 0x08 /* base ID */ +# define OSSL_QUIC_FRAME_TYPE_STREAM_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_LEN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_LEN_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF_LEN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF_LEN_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) + +# define OSSL_QUIC_FRAME_TYPE_IS_STREAM(x) \ + (((x) & ~OSSL_QUIC_FRAME_FLAG_STREAM_MASK) == OSSL_QUIC_FRAME_TYPE_STREAM) +# define OSSL_QUIC_FRAME_TYPE_IS_ACK(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_ACK_WITHOUT_ECN) +# define OSSL_QUIC_FRAME_TYPE_IS_MAX_STREAMS(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_MAX_STREAMS_BIDI) +# define OSSL_QUIC_FRAME_TYPE_IS_STREAMS_BLOCKED(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_STREAMS_BLOCKED_BIDI) +# define OSSL_QUIC_FRAME_TYPE_IS_CONN_CLOSE(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_TRANSPORT) + +const char *ossl_quic_frame_type_to_string(uint64_t frame_type); + +static ossl_unused ossl_inline int +ossl_quic_frame_type_is_ack_eliciting(uint64_t frame_type) +{ + switch (frame_type) { + case OSSL_QUIC_FRAME_TYPE_PADDING: + case OSSL_QUIC_FRAME_TYPE_ACK_WITHOUT_ECN: + case OSSL_QUIC_FRAME_TYPE_ACK_WITH_ECN: + case OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_TRANSPORT: + case OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_APP: + return 0; + default: + return 1; + } +} + +/* QUIC Transport Parameter Types */ +# define QUIC_TPARAM_ORIG_DCID 0x00 +# define QUIC_TPARAM_MAX_IDLE_TIMEOUT 0x01 +# define QUIC_TPARAM_STATELESS_RESET_TOKEN 0x02 +# define QUIC_TPARAM_MAX_UDP_PAYLOAD_SIZE 0x03 +# define QUIC_TPARAM_INITIAL_MAX_DATA 0x04 +# define QUIC_TPARAM_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL 0x05 +# define QUIC_TPARAM_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE 0x06 +# define QUIC_TPARAM_INITIAL_MAX_STREAM_DATA_UNI 0x07 +# define QUIC_TPARAM_INITIAL_MAX_STREAMS_BIDI 0x08 +# define QUIC_TPARAM_INITIAL_MAX_STREAMS_UNI 0x09 +# define QUIC_TPARAM_ACK_DELAY_EXP 0x0A +# define QUIC_TPARAM_MAX_ACK_DELAY 0x0B +# define QUIC_TPARAM_DISABLE_ACTIVE_MIGRATION 0x0C +# define QUIC_TPARAM_PREFERRED_ADDR 0x0D +# define QUIC_TPARAM_ACTIVE_CONN_ID_LIMIT 0x0E +# define QUIC_TPARAM_INITIAL_SCID 0x0F +# define QUIC_TPARAM_RETRY_SCID 0x10 + +/* + * QUIC Frame Logical Representations + * ================================== + */ + +/* QUIC Frame: ACK */ +typedef struct ossl_quic_ack_range_st { + /* + * Represents an inclusive range of packet numbers [start, end]. + * start must be <= end. + */ + QUIC_PN start, end; +} OSSL_QUIC_ACK_RANGE; + +typedef struct ossl_quic_frame_ack_st { + /* + * A sequence of packet number ranges [[start, end]...]. + * + * The ranges must be sorted in descending order, for example: + * [ 95, 100] + * [ 90, 92] + * etc. + * + * As such, ack_ranges[0].end is always the highest packet number + * being acknowledged and ack_ranges[num_ack_ranges-1].start is + * always the lowest packet number being acknowledged. + * + * num_ack_ranges must be greater than zero, as an ACK frame must + * acknowledge at least one packet number. + */ + OSSL_QUIC_ACK_RANGE *ack_ranges; + size_t num_ack_ranges; + + OSSL_TIME delay_time; + uint64_t ect0, ect1, ecnce; + unsigned int ecn_present : 1; +} OSSL_QUIC_FRAME_ACK; + +/* Returns 1 if the given frame contains the given PN. */ +int ossl_quic_frame_ack_contains_pn(const OSSL_QUIC_FRAME_ACK *ack, QUIC_PN pn); + +/* QUIC Frame: STREAM */ +typedef struct ossl_quic_frame_stream_st { + uint64_t stream_id; /* Stream ID */ + uint64_t offset; /* Logical offset in stream */ + uint64_t len; /* Length of data in bytes */ + const unsigned char *data; + + /* + * On encode, this determines whether the len field should be encoded or + * not. If zero, the len field is not encoded and it is assumed the frame + * runs to the end of the packet. + * + * On decode, this determines whether the frame had an explicitly encoded + * length. If not set, the frame runs to the end of the packet and len has + * been set accordingly. + */ + unsigned int has_explicit_len : 1; + + /* 1 if this is the end of the stream */ + unsigned int is_fin : 1; +} OSSL_QUIC_FRAME_STREAM; + +/* QUIC Frame: CRYPTO */ +typedef struct ossl_quic_frame_crypto_st { + uint64_t offset; /* Logical offset in stream */ + uint64_t len; /* Length of the data in bytes */ + const unsigned char *data; +} OSSL_QUIC_FRAME_CRYPTO; + +/* QUIC Frame: RESET_STREAM */ +typedef struct ossl_quic_frame_reset_stream_st { + uint64_t stream_id; + uint64_t app_error_code; + uint64_t final_size; +} OSSL_QUIC_FRAME_RESET_STREAM; + +/* QUIC Frame: STOP_SENDING */ +typedef struct ossl_quic_frame_stop_sending_st { + uint64_t stream_id; + uint64_t app_error_code; +} OSSL_QUIC_FRAME_STOP_SENDING; + +/* QUIC Frame: NEW_CONNECTION_ID */ +typedef struct ossl_quic_frame_new_conn_id_st { + uint64_t seq_num; + uint64_t retire_prior_to; + QUIC_CONN_ID conn_id; + QUIC_STATELESS_RESET_TOKEN stateless_reset; +} OSSL_QUIC_FRAME_NEW_CONN_ID; + +/* QUIC Frame: CONNECTION_CLOSE */ +typedef struct ossl_quic_frame_conn_close_st { + unsigned int is_app : 1; /* 0: transport error, 1: app error */ + uint64_t error_code; /* 62-bit transport or app error code */ + uint64_t frame_type; /* transport errors only */ + char *reason; /* UTF-8 string, not necessarily zero-terminated */ + size_t reason_len; /* Length of reason in bytes */ +} OSSL_QUIC_FRAME_CONN_CLOSE; + +/* + * QUIC Wire Format Encoding + * ========================= + * + * These functions return 1 on success and 0 on failure. + */ + +/* + * Encodes zero or more QUIC PADDING frames to the packet writer. Each PADDING + * frame consumes one byte; num_bytes specifies the number of bytes of padding + * to write. + */ +int ossl_quic_wire_encode_padding(WPACKET *pkt, size_t num_bytes); + +/* + * Encodes a QUIC PING frame to the packet writer. This frame type takes + * no arguments. +*/ +int ossl_quic_wire_encode_frame_ping(WPACKET *pkt); + +/* + * Encodes a QUIC ACK frame to the packet writer, given a logical representation + * of the ACK frame. + * + * The ACK ranges passed must be sorted in descending order. + * + * The logical representation stores a list of packet number ranges. The wire + * encoding is slightly different and stores the first range in the list + * in a different manner. + * + * The ack_delay_exponent argument specifies the index of a power of two by + * which the ack->ack_delay field is be divided. This exponent value must match + * the value used when decoding. + */ +int ossl_quic_wire_encode_frame_ack(WPACKET *pkt, + uint32_t ack_delay_exponent, + const OSSL_QUIC_FRAME_ACK *ack); + +/* + * Encodes a QUIC RESET_STREAM frame to the packet writer, given a logical + * representation of the RESET_STREAM frame. + */ +int ossl_quic_wire_encode_frame_reset_stream(WPACKET *pkt, + const OSSL_QUIC_FRAME_RESET_STREAM *f); + +/* + * Encodes a QUIC STOP_SENDING frame to the packet writer, given a logical + * representation of the STOP_SENDING frame. + */ +int ossl_quic_wire_encode_frame_stop_sending(WPACKET *pkt, + const OSSL_QUIC_FRAME_STOP_SENDING *f); + +/* + * Encodes a QUIC CRYPTO frame header to the packet writer. + * + * To create a well-formed frame, the data written using this function must be + * immediately followed by f->len bytes of data. + */ +int ossl_quic_wire_encode_frame_crypto_hdr(WPACKET *hdr, + const OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Returns the number of bytes which will be required to encode the given + * CRYPTO frame header. Does not include the payload bytes in the count. + * Returns 0 if input is invalid. + */ +size_t ossl_quic_wire_get_encoded_frame_len_crypto_hdr(const OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Encodes a QUIC CRYPTO frame to the packet writer. + * + * This function returns a pointer to a buffer of f->len bytes which the caller + * should fill however it wishes. If f->data is non-NULL, it is automatically + * copied to the target buffer, otherwise the caller must fill the returned + * buffer. Returns NULL on failure. + */ +void *ossl_quic_wire_encode_frame_crypto(WPACKET *pkt, + const OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Encodes a QUIC NEW_TOKEN frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_new_token(WPACKET *pkt, + const unsigned char *token, + size_t token_len); + +/* + * Encodes a QUIC STREAM frame's header to the packet writer. The f->stream_id, + * f->offset and f->len fields are the values for the respective Stream ID, + * Offset and Length fields. + * + * If f->is_fin is non-zero, the frame is marked as the final frame in the + * stream. + * + * If f->has_explicit_len is zerro, the frame is assumed to be the final frame + * in the packet, which the caller is responsible for ensuring; the Length + * field is then omitted. + * + * To create a well-formed frame, the data written using this function must be + * immediately followed by f->len bytes of stream data. + */ +int ossl_quic_wire_encode_frame_stream_hdr(WPACKET *pkt, + const OSSL_QUIC_FRAME_STREAM *f); + +/* + * Returns the number of bytes which will be required to encode the given + * STREAM frame header. Does not include the payload bytes in the count. + * Returns 0 if input is invalid. + */ +size_t ossl_quic_wire_get_encoded_frame_len_stream_hdr(const OSSL_QUIC_FRAME_STREAM *f); + +/* + * Functions similarly to ossl_quic_wire_encode_frame_stream_hdr, but it also + * allocates space for f->len bytes of data after the header, creating a + * well-formed QUIC STREAM frame in one call. + * + * A pointer to the bytes allocated for the framme payload is returned, + * which the caller can fill however it wishes. If f->data is non-NULL, + * it is automatically copied to the target buffer, otherwise the caller + * must fill the returned buffer. Returns NULL on failure. + */ +void *ossl_quic_wire_encode_frame_stream(WPACKET *pkt, + const OSSL_QUIC_FRAME_STREAM *f); + +/* + * Encodes a QUIC MAX_DATA frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_max_data(WPACKET *pkt, + uint64_t max_data); + +/* + * Encodes a QUIC MAX_STREAM_DATA frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_max_stream_data(WPACKET *pkt, + uint64_t stream_id, + uint64_t max_data); + +/* + * Encodes a QUIC MAX_STREAMS frame to the packet writer. + * + * If is_uni is 0, the count specifies the maximum number of + * bidirectional streams; else it specifies the maximum number of unidirectional + * streams. + */ +int ossl_quic_wire_encode_frame_max_streams(WPACKET *pkt, + char is_uni, + uint64_t max_streams); + +/* + * Encodes a QUIC DATA_BLOCKED frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_data_blocked(WPACKET *pkt, + uint64_t max_data); + +/* + * Encodes a QUIC STREAM_DATA_BLOCKED frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_stream_data_blocked(WPACKET *pkt, + uint64_t stream_id, + uint64_t max_stream_data); +/* + * Encodes a QUIC STREAMS_BLOCKED frame to the packet writer. + * + * If is_uni is 0, the count specifies the maximum number of + * bidirectional streams; else it specifies the maximum number of unidirectional + * streams. + */ +int ossl_quic_wire_encode_frame_streams_blocked(WPACKET *pkt, + char is_uni, + uint64_t max_streams); + +/* + * Encodes a QUIC NEW_CONNECTION_ID frame to the packet writer, given a logical + * representation of the NEW_CONNECTION_ID frame. + * + * The buffer pointed to by the conn_id field must be valid for the duration of + * the call. + */ +int ossl_quic_wire_encode_frame_new_conn_id(WPACKET *pkt, + const OSSL_QUIC_FRAME_NEW_CONN_ID *f); + +/* + * Encodes a QUIC RETIRE_CONNECTION_ID frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_retire_conn_id(WPACKET *pkt, + uint64_t seq_num); + +/* + * Encodes a QUIC PATH_CHALLENGE frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_path_challenge(WPACKET *pkt, + uint64_t data); + +/* + * Encodes a QUIC PATH_RESPONSE frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_path_response(WPACKET *pkt, + uint64_t data); + +/* + * Encodes a QUIC CONNECTION_CLOSE frame to the packet writer, given a logical + * representation of the CONNECTION_CLOSE frame. + * + * The reason field may be NULL, in which case no reason is encoded. If the + * reason field is non-NULL, it must point to a valid UTF-8 string and + * reason_len must be set to the length of the reason string in bytes. The + * reason string need not be zero terminated. + */ +int ossl_quic_wire_encode_frame_conn_close(WPACKET *pkt, + const OSSL_QUIC_FRAME_CONN_CLOSE *f); + +/* + * Encodes a QUIC HANDSHAKE_DONE frame to the packet writer. This frame type + * takes no arguiments. + */ +int ossl_quic_wire_encode_frame_handshake_done(WPACKET *pkt); + +/* + * Encodes a QUIC transport parameter TLV with the given ID into the WPACKET. + * The payload is an arbitrary buffer. + * + * If value is non-NULL, the value is copied into the packet. + * If it is NULL, value_len bytes are allocated for the payload and the caller + * should fill the buffer using the returned pointer. + * + * Returns a pointer to the start of the payload on success, or NULL on failure. + */ +unsigned char *ossl_quic_wire_encode_transport_param_bytes(WPACKET *pkt, + uint64_t id, + const unsigned char *value, + size_t value_len); + +/* + * Encodes a QUIC transport parameter TLV with the given ID into the WPACKET. + * The payload is a QUIC variable-length integer with the given value. + */ +int ossl_quic_wire_encode_transport_param_int(WPACKET *pkt, + uint64_t id, + uint64_t value); + +/* + * Encodes a QUIC transport parameter TLV with a given ID into the WPACKET. + * The payload is a QUIC connection ID. + */ +int ossl_quic_wire_encode_transport_param_cid(WPACKET *wpkt, + uint64_t id, + const QUIC_CONN_ID *cid); + +/* + * QUIC Wire Format Decoding + * ========================= + * + * These functions return 1 on success or 0 for failure. Typical reasons + * why these functions may fail include: + * + * - A frame decode function is called but the frame in the PACKET's buffer + * is not of the correct type. + * + * - A variable-length field in the encoded frame appears to exceed the bounds + * of the PACKET's buffer. + * + * These functions should be called with the PACKET pointing to the start of the + * frame (including the initial type field), and consume an entire frame + * including its type field. The expectation is that the caller will have + * already discerned the frame type using ossl_quic_wire_peek_frame_header(). + */ + +/* + * Decodes the type field header of a QUIC frame (without advancing the current + * position). This can be used to determine the frame type and determine which + * frame decoding function to call. + */ +int ossl_quic_wire_peek_frame_header(PACKET *pkt, uint64_t *type, + int *was_minimal); + +/* + * Like ossl_quic_wire_peek_frame_header, but advances the current position + * so that the type field is consumed. For advanced use only. + */ +int ossl_quic_wire_skip_frame_header(PACKET *pkt, uint64_t *type); + +/* + * Determines how many ranges are needed to decode a QUIC ACK frame. + * + * The number of ranges which must be allocated before the call to + * ossl_quic_wire_decode_frame_ack is written to *total_ranges. + * + * The PACKET is not advanced. + */ +int ossl_quic_wire_peek_frame_ack_num_ranges(const PACKET *pkt, + uint64_t *total_ranges); + +/* + * Decodes a QUIC ACK frame. The ack_ranges field of the passed structure should + * point to a preallocated array of ACK ranges and the num_ack_ranges field + * should specify the length of allocation. + * + * *total_ranges is written with the number of ranges in the decoded frame, + * which may be greater than the number of ranges which were decoded (i.e. if + * num_ack_ranges was too small to decode all ranges). + * + * On success, this function modifies the num_ack_ranges field to indicate the + * number of ranges in the decoded frame. This is the number of entries in the + * ACK ranges array written by this function; any additional entries are not + * modified. + * + * If the number of ACK ranges in the decoded frame exceeds that in + * num_ack_ranges, as many ACK ranges as possible are decoded into the range + * array. The caller can use the value written to *total_ranges to detect this + * condition, as *total_ranges will exceed num_ack_ranges. + * + * If ack is NULL, the frame is still decoded, but only *total_ranges is + * written. This can be used to determine the number of ranges which must be + * allocated. + * + * The ack_delay_exponent argument specifies the index of a power of two used to + * decode the ack_delay field. This must match the ack_delay_exponent value used + * to encode the frame. + */ +int ossl_quic_wire_decode_frame_ack(PACKET *pkt, + uint32_t ack_delay_exponent, + OSSL_QUIC_FRAME_ACK *ack, + uint64_t *total_ranges); + +/* + * Decodes a QUIC RESET_STREAM frame. + */ +int ossl_quic_wire_decode_frame_reset_stream(PACKET *pkt, + OSSL_QUIC_FRAME_RESET_STREAM *f); + +/* + * Decodes a QUIC STOP_SENDING frame. + */ +int ossl_quic_wire_decode_frame_stop_sending(PACKET *pkt, + OSSL_QUIC_FRAME_STOP_SENDING *f); + +/* + * Decodes a QUIC CRYPTO frame. + * + * f->data is set to point inside the packet buffer inside the PACKET, therefore + * it is safe to access for as long as the packet buffer exists. If nodata is + * set to 1 then reading the PACKET stops after the frame header and f->data is + * set to NULL. + */ +int ossl_quic_wire_decode_frame_crypto(PACKET *pkt, int nodata, + OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Decodes a QUIC NEW_TOKEN frame. *token is written with a pointer to the token + * bytes and *token_len is written with the length of the token in bytes. + */ +int ossl_quic_wire_decode_frame_new_token(PACKET *pkt, + const unsigned char **token, + size_t *token_len); + +/* + * Decodes a QUIC STREAM frame. + * + * If nodata is set to 1 then reading the PACKET stops after the frame header + * and f->data is set to NULL. In this case f->len will also be 0 in the event + * that "has_explicit_len" is 0. + * + * If the frame did not contain an offset field, f->offset is set to 0, as the + * absence of an offset field is equivalent to an offset of 0. + * + * If the frame contained a length field, f->has_explicit_len is set to 1 and + * the length of the data is placed in f->len. This function ensures that the + * length does not exceed the packet buffer, thus it is safe to access f->data. + * + * If the frame did not contain a length field, this means that the frame runs + * until the end of the packet. This function sets f->has_explicit_len to zero, + * and f->len to the amount of data remaining in the input buffer. Therefore, + * this function should be used with a PACKET representing a single packet (and + * not e.g. multiple packets). + * + * Note also that this means f->len is always valid after this function returns + * successfully, regardless of the value of f->has_explicit_len. + * + * f->data points inside the packet buffer inside the PACKET, therefore it is + * safe to access for as long as the packet buffer exists. + * + * f->is_fin is set according to whether the frame was marked as ending the + * stream. + */ +int ossl_quic_wire_decode_frame_stream(PACKET *pkt, int nodata, + OSSL_QUIC_FRAME_STREAM *f); + +/* + * Decodes a QUIC MAX_DATA frame. The Maximum Data field is written to + * *max_data. + */ +int ossl_quic_wire_decode_frame_max_data(PACKET *pkt, + uint64_t *max_data); + +/* + * Decodes a QUIC MAX_STREAM_DATA frame. The Stream ID is written to *stream_id + * and Maximum Stream Data field is written to *max_stream_data. + */ +int ossl_quic_wire_decode_frame_max_stream_data(PACKET *pkt, + uint64_t *stream_id, + uint64_t *max_stream_data); +/* + * Decodes a QUIC MAX_STREAMS frame. The Maximum Streams field is written to + * *max_streams. + * + * Whether the limit concerns bidirectional streams or unidirectional streams is + * denoted by the frame type; the caller should examine the frame type to + * determine this. + */ +int ossl_quic_wire_decode_frame_max_streams(PACKET *pkt, + uint64_t *max_streams); + +/* + * Decodes a QUIC DATA_BLOCKED frame. The Maximum Data field is written to + * *max_data. + */ +int ossl_quic_wire_decode_frame_data_blocked(PACKET *pkt, + uint64_t *max_data); + +/* + * Decodes a QUIC STREAM_DATA_BLOCKED frame. The Stream ID and Maximum Stream + * Data fields are written to *stream_id and *max_stream_data respectively. + */ +int ossl_quic_wire_decode_frame_stream_data_blocked(PACKET *pkt, + uint64_t *stream_id, + uint64_t *max_stream_data); + +/* + * Decodes a QUIC STREAMS_BLOCKED frame. The Maximum Streams field is written to + * *max_streams. + * + * Whether the limit concerns bidirectional streams or unidirectional streams is + * denoted by the frame type; the caller should examine the frame type to + * determine this. + */ +int ossl_quic_wire_decode_frame_streams_blocked(PACKET *pkt, + uint64_t *max_streams); + + +/* + * Decodes a QUIC NEW_CONNECTION_ID frame. The logical representation of the + * frame is written to *f. + * + * The conn_id field is set to point to the connection ID string inside the + * packet buffer; it is therefore valid for as long as the PACKET's buffer is + * valid. The conn_id_len field is set to the length of the connection ID string + * in bytes. + */ +int ossl_quic_wire_decode_frame_new_conn_id(PACKET *pkt, + OSSL_QUIC_FRAME_NEW_CONN_ID *f); + +/* + * Decodes a QUIC RETIRE_CONNECTION_ID frame. The Sequence Number field + * is written to *seq_num. + */ +int ossl_quic_wire_decode_frame_retire_conn_id(PACKET *pkt, + uint64_t *seq_num); + +/* + * Decodes a QUIC PATH_CHALLENGE frame. The Data field is written to *data. + */ +int ossl_quic_wire_decode_frame_path_challenge(PACKET *pkt, + uint64_t *data); + +/* + * Decodes a QUIC PATH_CHALLENGE frame. The Data field is written to *data. + */ +int ossl_quic_wire_decode_frame_path_response(PACKET *pkt, + uint64_t *data); + +/* + * Decodes a QUIC CONNECTION_CLOSE frame. The logical representation + * of the frame is written to *f. + * + * The reason field is set to point to the UTF-8 reason string inside + * the packet buffer; it is therefore valid for as long as the PACKET's + * buffer is valid. The reason_len field is set to the length of the + * reason string in bytes. + * + * IMPORTANT: The reason string is not zero-terminated. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_wire_decode_frame_conn_close(PACKET *pkt, + OSSL_QUIC_FRAME_CONN_CLOSE *f); + +/* + * Decodes one or more PADDING frames. PADDING frames have no arguments. + * + * Returns the number of PADDING frames decoded or 0 on error. + */ +size_t ossl_quic_wire_decode_padding(PACKET *pkt); + +/* + * Decodes a PING frame. The frame has no arguments. + */ +int ossl_quic_wire_decode_frame_ping(PACKET *pkt); + +/* + * Decodes a HANDSHAKE_DONE frame. The frame has no arguments. + */ +int ossl_quic_wire_decode_frame_handshake_done(PACKET *pkt); + +/* + * Peeks at the ID of the next QUIC transport parameter TLV in the stream. + * The ID is written to *id. + */ +int ossl_quic_wire_peek_transport_param(PACKET *pkt, uint64_t *id); + +/* + * Decodes a QUIC transport parameter TLV. A pointer to the value buffer is + * returned on success. This points inside the PACKET's buffer and is therefore + * valid as long as the PACKET's buffer is valid. + * + * The transport parameter ID is written to *id (if non-NULL) and the length of + * the payload in bytes is written to *len. + * + * Returns NULL on failure. + */ +const unsigned char *ossl_quic_wire_decode_transport_param_bytes(PACKET *pkt, + uint64_t *id, + size_t *len); + +/* + * Decodes a QUIC transport parameter TLV containing a variable-length integer. + * + * The transport parameter ID is written to *id (if non-NULL) and the value is + * written to *value. + */ +int ossl_quic_wire_decode_transport_param_int(PACKET *pkt, + uint64_t *id, + uint64_t *value); + +/* + * Decodes a QUIC transport parameter TLV containing a connection ID. + * + * The transport parameter ID is written to *id (if non-NULL) and the value is + * written to *value. + */ +int ossl_quic_wire_decode_transport_param_cid(PACKET *pkt, + uint64_t *id, + QUIC_CONN_ID *cid); + +/* + * Decodes a QUIC transport parameter TLV containing a preferred_address. + */ +typedef struct quic_preferred_addr_st { + uint16_t ipv4_port, ipv6_port; + unsigned char ipv4[4], ipv6[16]; + QUIC_STATELESS_RESET_TOKEN stateless_reset; + QUIC_CONN_ID cid; +} QUIC_PREFERRED_ADDR; + +int ossl_quic_wire_decode_transport_param_preferred_addr(PACKET *pkt, + QUIC_PREFERRED_ADDR *p); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire_pkt.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire_pkt.h new file mode 100644 index 00000000..18a483fc --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/quic_wire_pkt.h @@ -0,0 +1,629 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_WIRE_PKT_H +# define OSSL_QUIC_WIRE_PKT_H + +# include +# include "internal/packet_quic.h" +# include "internal/quic_types.h" + +# ifndef OPENSSL_NO_QUIC + +# define QUIC_VERSION_NONE ((uint32_t)0) /* Used for version negotiation */ +# define QUIC_VERSION_1 ((uint32_t)1) /* QUIC v1 */ + +/* QUIC logical packet type. These do not match wire values. */ +# define QUIC_PKT_TYPE_INITIAL 1 +# define QUIC_PKT_TYPE_0RTT 2 +# define QUIC_PKT_TYPE_HANDSHAKE 3 +# define QUIC_PKT_TYPE_RETRY 4 +# define QUIC_PKT_TYPE_1RTT 5 +# define QUIC_PKT_TYPE_VERSION_NEG 6 + +/* + * Determine encryption level from packet type. Returns QUIC_ENC_LEVEL_NUM if + * the packet is not of a type which is encrypted. + */ +static ossl_inline ossl_unused uint32_t +ossl_quic_pkt_type_to_enc_level(uint32_t pkt_type) +{ + switch (pkt_type) { + case QUIC_PKT_TYPE_INITIAL: + return QUIC_ENC_LEVEL_INITIAL; + case QUIC_PKT_TYPE_HANDSHAKE: + return QUIC_ENC_LEVEL_HANDSHAKE; + case QUIC_PKT_TYPE_0RTT: + return QUIC_ENC_LEVEL_0RTT; + case QUIC_PKT_TYPE_1RTT: + return QUIC_ENC_LEVEL_1RTT; + default: + return QUIC_ENC_LEVEL_NUM; + } +} + +static ossl_inline ossl_unused uint32_t +ossl_quic_enc_level_to_pkt_type(uint32_t enc_level) +{ + switch (enc_level) { + case QUIC_ENC_LEVEL_INITIAL: + return QUIC_PKT_TYPE_INITIAL; + case QUIC_ENC_LEVEL_HANDSHAKE: + return QUIC_PKT_TYPE_HANDSHAKE; + case QUIC_ENC_LEVEL_0RTT: + return QUIC_PKT_TYPE_0RTT; + case QUIC_ENC_LEVEL_1RTT: + return QUIC_PKT_TYPE_1RTT; + default: + return UINT32_MAX; + } +} + +/* Determine if a packet type contains an encrypted payload. */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_is_encrypted(uint32_t pkt_type) +{ + switch (pkt_type) { + case QUIC_PKT_TYPE_RETRY: + case QUIC_PKT_TYPE_VERSION_NEG: + return 0; + default: + return 1; + } +} + +/* Determine if a packet type contains a PN field. */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_has_pn(uint32_t pkt_type) +{ + /* + * Currently a packet has a PN iff it is encrypted. This could change + * someday. + */ + return ossl_quic_pkt_type_is_encrypted(pkt_type); +} + +/* + * Determine if a packet type can appear with other packets in a datagram. Some + * packet types must be the sole packet in a datagram. + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_can_share_dgram(uint32_t pkt_type) +{ + /* + * Currently only the encrypted packet types can share a datagram. This + * could change someday. + */ + return ossl_quic_pkt_type_is_encrypted(pkt_type); +} + +/* + * Determine if the packet type must come at the end of the datagram (due to the + * lack of a length field). + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_must_be_last(uint32_t pkt_type) +{ + /* + * Any packet type which cannot share a datagram obviously must come last. + * 1-RTT also must come last as it lacks a length field. + */ + return !ossl_quic_pkt_type_can_share_dgram(pkt_type) + || pkt_type == QUIC_PKT_TYPE_1RTT; +} + +/* + * Determine if the packet type has a version field. + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_has_version(uint32_t pkt_type) +{ + return pkt_type != QUIC_PKT_TYPE_1RTT && pkt_type != QUIC_PKT_TYPE_VERSION_NEG; +} + +/* + * Determine if the packet type has a SCID field. + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_has_scid(uint32_t pkt_type) +{ + return pkt_type != QUIC_PKT_TYPE_1RTT; +} + +/* + * Smallest possible QUIC packet size as per RFC (aside from version negotiation + * packets). + */ +# define QUIC_MIN_VALID_PKT_LEN_CRYPTO 21 +# define QUIC_MIN_VALID_PKT_LEN_VERSION_NEG 7 +# define QUIC_MIN_VALID_PKT_LEN QUIC_MIN_VALID_PKT_LEN_VERSION_NEG + +typedef struct quic_pkt_hdr_ptrs_st QUIC_PKT_HDR_PTRS; + +/* + * QUIC Packet Header Protection + * ============================= + * + * Functions to apply and remove QUIC packet header protection. A header + * protector is initialised using ossl_quic_hdr_protector_init and must be + * destroyed using ossl_quic_hdr_protector_cleanup when no longer needed. + */ +typedef struct quic_hdr_protector_st { + OSSL_LIB_CTX *libctx; + const char *propq; + EVP_CIPHER_CTX *cipher_ctx; + EVP_CIPHER *cipher; + uint32_t cipher_id; +} QUIC_HDR_PROTECTOR; + +# define QUIC_HDR_PROT_CIPHER_AES_128 1 +# define QUIC_HDR_PROT_CIPHER_AES_256 2 +# define QUIC_HDR_PROT_CIPHER_CHACHA 3 + +/* + * Initialises a header protector. + * + * cipher_id: + * The header protection cipher method to use. One of + * QUIC_HDR_PROT_CIPHER_*. Must be chosen based on negotiated TLS cipher + * suite. + * + * quic_hp_key: + * This must be the "quic hp" key derived from a traffic secret. + * + * The length of the quic_hp_key must correspond to that expected for the + * given cipher ID. + * + * The header protector performs amortisable initialisation in this function, + * therefore a header protector should be used for as long as possible. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_init(QUIC_HDR_PROTECTOR *hpr, + OSSL_LIB_CTX *libctx, + const char *propq, + uint32_t cipher_id, + const unsigned char *quic_hp_key, + size_t quic_hp_key_len); + +/* + * Destroys a header protector. This is also safe to call on a zero-initialized + * OSSL_QUIC_HDR_PROTECTOR structure which has not been initialized, or which + * has already been destroyed. + */ +void ossl_quic_hdr_protector_cleanup(QUIC_HDR_PROTECTOR *hpr); + +/* + * Removes header protection from a packet. The packet payload must currently be + * encrypted (i.e., you must remove header protection before decrypting packets + * received). The function examines the header buffer to determine which bytes + * of the header need to be decrypted. + * + * If this function fails, no data is modified. + * + * This is implemented as a call to ossl_quic_hdr_protector_decrypt_fields(). + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_decrypt(QUIC_HDR_PROTECTOR *hpr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Applies header protection to a packet. The packet payload must already have + * been encrypted (i.e., you must apply header protection after encrypting + * a packet). The function examines the header buffer to determine which bytes + * of the header need to be encrypted. + * + * This is implemented as a call to ossl_quic_hdr_protector_encrypt_fields(). + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_encrypt(QUIC_HDR_PROTECTOR *hpr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Removes header protection from a packet. The packet payload must currently + * be encrypted. This is a low-level function which assumes you have already + * determined which parts of the packet header need to be decrypted. + * + * sample: + * The range of bytes in the packet to be used to generate the header + * protection mask. It is permissible to set sample_len to the size of the + * remainder of the packet; this function will only use as many bytes as + * needed. If not enough sample bytes are provided, this function fails. + * + * first_byte: + * The first byte of the QUIC packet header to be decrypted. + * + * pn: + * Pointer to the start of the PN field. The caller is responsible + * for ensuring at least four bytes follow this pointer. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_decrypt_fields(QUIC_HDR_PROTECTOR *hpr, + const unsigned char *sample, + size_t sample_len, + unsigned char *first_byte, + unsigned char *pn_bytes); + +/* + * Works analogously to ossl_hdr_protector_decrypt_fields, but applies header + * protection instead of removing it. + */ +int ossl_quic_hdr_protector_encrypt_fields(QUIC_HDR_PROTECTOR *hpr, + const unsigned char *sample, + size_t sample_len, + unsigned char *first_byte, + unsigned char *pn_bytes); + +/* + * QUIC Packet Header + * ================== + * + * This structure provides a logical representation of a QUIC packet header. + * + * QUIC packet formats fall into the following categories: + * + * Long Packets, which is subdivided into five possible packet types: + * Version Negotiation (a special case); + * Initial; + * 0-RTT; + * Handshake; and + * Retry + * + * Short Packets, which comprises only a single packet type (1-RTT). + * + * The packet formats vary and common fields are found in some packets but + * not others. The below table indicates which fields are present in which + * kinds of packet. * indicates header protection is applied. + * + * SLLLLL Legend: 1=1-RTT, i=Initial, 0=0-RTT, h=Handshake + * 1i0hrv r=Retry, v=Version Negotiation + * ------ + * 1i0hrv Header Form (0=Short, 1=Long) + * 1i0hr Fixed Bit (always 1) + * 1 Spin Bit + * 1 * Reserved Bits + * 1 * Key Phase + * 1i0h * Packet Number Length + * i0hr? Long Packet Type + * i0h Type-Specific Bits + * i0hr Version (note: always 0 for Version Negotiation packets) + * 1i0hrv Destination Connection ID + * i0hrv Source Connection ID + * 1i0h * Packet Number + * i Token + * i0h Length + * r Retry Token + * r Retry Integrity Tag + * + * For each field below, the conditions under which the field is valid are + * specified. If a field is not currently valid, it is initialized to a zero or + * NULL value. + */ +typedef struct quic_pkt_hdr_st { + /* [ALL] A QUIC_PKT_TYPE_* value. Always valid. */ + unsigned int type :8; + + /* [S] Value of the spin bit. Valid if (type == 1RTT). */ + unsigned int spin_bit :1; + + /* + * [S] Value of the Key Phase bit in the short packet. + * Valid if (type == 1RTT && !partial). + */ + unsigned int key_phase :1; + + /* + * [1i0h] Length of packet number in bytes. This is the decoded value. + * Valid if ((type == 1RTT || (version && type != RETRY)) && !partial). + */ + unsigned int pn_len :4; + + /* + * [ALL] Set to 1 if this is a partial decode because the packet header + * has not yet been deprotected. pn_len, pn and key_phase are not valid if + * this is set. + */ + unsigned int partial :1; + + /* + * [ALL] Whether the fixed bit was set. Note that only Version Negotiation + * packets are allowed to have this unset, so this will always be 1 for all + * other packet types (decode will fail if it is not set). Ignored when + * encoding unless encoding a Version Negotiation packet. + */ + unsigned int fixed :1; + + /* + * The unused bits in the low 4 bits of a Retry packet header's first byte. + * This is used to ensure that Retry packets have the same bit-for-bit + * representation in their header when decoding and encoding them again. + * This is necessary to validate Retry packet headers. + */ + unsigned int unused :4; + + /* + * The 'Reserved' bits in an Initial, Handshake, 0-RTT or 1-RTT packet + * header's first byte. These are provided so that the caller can validate + * that they are zero, as this must be done after packet protection is + * successfully removed to avoid creating a timing channel. + */ + unsigned int reserved :2; + + /* [L] Version field. Valid if (type != 1RTT). */ + uint32_t version; + + /* [ALL] The destination connection ID. Always valid. */ + QUIC_CONN_ID dst_conn_id; + + /* + * [L] The source connection ID. + * Valid if (type != 1RTT). + */ + QUIC_CONN_ID src_conn_id; + + /* + * [1i0h] Relatively-encoded packet number in raw, encoded form. The correct + * decoding of this value is context-dependent. The number of bytes valid in + * this buffer is determined by pn_len above. If the decode was partial, + * this field is not valid. + * + * Valid if ((type == 1RTT || (version && type != RETRY)) && !partial). + */ + unsigned char pn[4]; + + /* + * [i] Token field in Initial packet. Points to memory inside the decoded + * PACKET, and therefore is valid for as long as the PACKET's buffer is + * valid. token_len is the length of the token in bytes. + * + * Valid if (type == INITIAL). + */ + const unsigned char *token; + size_t token_len; + + /* + * [ALL] Payload length in bytes. + * + * Though 1-RTT, Retry and Version Negotiation packets do not contain an + * explicit length field, this field is always valid and is used by the + * packet header encoding and decoding routines to describe the payload + * length, regardless of whether the packet type encoded or decoded uses an + * explicit length indication. + */ + size_t len; + + /* + * Pointer to start of payload data in the packet. Points to memory inside + * the decoded PACKET, and therefore is valid for as long as the PACKET'S + * buffer is valid. The length of the buffer in bytes is in len above. + * + * For Version Negotiation packets, points to the array of supported + * versions. + * + * For Retry packets, points to the Retry packet payload, which comprises + * the Retry Token followed by a 16-byte Retry Integrity Tag. + * + * Regardless of whether a packet is a Version Negotiation packet (where the + * payload contains a list of supported versions), a Retry packet (where the + * payload contains a Retry Token and Retry Integrity Tag), or any other + * packet type (where the payload contains frames), the payload is not + * validated and the user must parse the payload bearing this in mind. + * + * If the decode was partial (partial is set), this points to the start of + * the packet number field, rather than the protected payload, as the length + * of the packet number field is unknown. The len field reflects this in + * this case (i.e., the len field is the number of payload bytes plus the + * number of bytes comprising the PN). + */ + const unsigned char *data; +} QUIC_PKT_HDR; + +/* + * Extra information which can be output by the packet header decode functions + * for the assistance of the header protector. This avoids the header protector + * needing to partially re-decode the packet header. + */ +struct quic_pkt_hdr_ptrs_st { + unsigned char *raw_start; /* start of packet */ + unsigned char *raw_sample; /* start of sampling range */ + size_t raw_sample_len; /* maximum length of sampling range */ + + /* + * Start of PN field. Guaranteed to be NULL unless at least four bytes are + * available via this pointer. + */ + unsigned char *raw_pn; +}; + +/* + * If partial is 1, reads the unprotected parts of a protected packet header + * from a PACKET, performing a partial decode. + * + * If partial is 0, the input is assumed to have already had header protection + * removed, and all header fields are decoded. + * + * If nodata is 1, the input is assumed to have no payload data in it. Otherwise + * payload data must be present. + * + * On success, the logical decode of the packet header is written to *hdr. + * hdr->partial is set or cleared according to whether a partial decode was + * performed. *ptrs is filled with pointers to various parts of the packet + * buffer. + * + * In order to decode short packets, the connection ID length being used must be + * known contextually, and should be passed as short_conn_id_len. If + * short_conn_id_len is set to an invalid value (a value greater than + * QUIC_MAX_CONN_ID_LEN), this function fails when trying to decode a short + * packet, but succeeds for long packets. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_decode_pkt_hdr(PACKET *pkt, + size_t short_conn_id_len, + int partial, + int nodata, + QUIC_PKT_HDR *hdr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Encodes a packet header. The packet is written to pkt. + * + * The length of the (encrypted) packet payload should be written to hdr->len + * and will be placed in the serialized packet header. The payload data itself + * is not copied; the caller should write hdr->len bytes of encrypted payload to + * the WPACKET immediately after the call to this function. However, + * WPACKET_reserve_bytes is called for the payload size. + * + * This function does not apply header protection. You must apply header + * protection yourself after calling this function. *ptrs is filled with + * pointers which can be passed to a header protector, but this must be + * performed after the encrypted payload is written. + * + * The pointers in *ptrs are direct pointers into the WPACKET buffer. If more + * data is written to the WPACKET buffer, WPACKET buffer reallocations may + * occur, causing these pointers to become invalid. Therefore, you must not call + * any write WPACKET function between this call and the call to + * ossl_quic_hdr_protector_encrypt. This function calls WPACKET_reserve_bytes + * for the payload length, so you may assume hdr->len bytes are already free to + * write at the WPACKET cursor location once this function returns successfully. + * It is recommended that you call this function, write the encrypted payload, + * call ossl_quic_hdr_protector_encrypt, and then call + * WPACKET_allocate_bytes(hdr->len). + * + * Version Negotiation and Retry packets do not use header protection; for these + * header types, the fields in *ptrs are all written as zero. Version + * Negotiation, Retry and 1-RTT packets do not contain a Length field, but + * hdr->len bytes of data are still reserved in the WPACKET. + * + * If serializing a short packet and short_conn_id_len does not match the DCID + * specified in hdr, the function fails. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_encode_pkt_hdr(WPACKET *pkt, + size_t short_conn_id_len, + const QUIC_PKT_HDR *hdr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Retrieves only the DCID from a packet header. This is intended for demuxer + * use. It avoids the need to parse the rest of the packet header twice. + * + * Information on packet length is not decoded, as this only needs to be used on + * the first packet in a datagram, therefore this takes a buffer and not a + * PACKET. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_get_pkt_hdr_dst_conn_id(const unsigned char *buf, + size_t buf_len, + size_t short_conn_id_len, + QUIC_CONN_ID *dst_conn_id); + +/* + * Precisely predicts the encoded length of a packet header structure. + * + * May return 0 if the packet header is not valid, but the fact that this + * function returns non-zero does not guarantee that + * ossl_quic_wire_encode_pkt_hdr() will succeed. + */ +int ossl_quic_wire_get_encoded_pkt_hdr_len(size_t short_conn_id_len, + const QUIC_PKT_HDR *hdr); + +/* + * Packet Number Encoding + * ====================== + */ + +/* + * Decode an encoded packet header QUIC PN. + * + * enc_pn is the raw encoded PN to decode. enc_pn_len is its length in bytes as + * indicated by packet headers. largest_pn is the largest PN successfully + * processed in the relevant PN space. + * + * The resulting PN is written to *res_pn. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_wire_decode_pkt_hdr_pn(const unsigned char *enc_pn, + size_t enc_pn_len, + QUIC_PN largest_pn, + QUIC_PN *res_pn); + +/* + * Determine how many bytes should be used to encode a PN. Returns the number of + * bytes (which will be in range [1, 4]). + */ +int ossl_quic_wire_determine_pn_len(QUIC_PN pn, QUIC_PN largest_acked); + +/* + * Encode a PN for a packet header using the specified number of bytes, which + * should have been determined by calling ossl_quic_wire_determine_pn_len. The + * PN encoding process is done in two parts to allow the caller to override PN + * encoding length if it wishes. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_encode_pkt_hdr_pn(QUIC_PN pn, + unsigned char *enc_pn, + size_t enc_pn_len); + +/* + * Retry Integrity Tags + * ==================== + */ + +# define QUIC_RETRY_INTEGRITY_TAG_LEN 16 + +/* + * Validate a retry integrity tag. Returns 1 if the tag is valid. + * + * Must be called on a hdr with a type of QUIC_PKT_TYPE_RETRY with a valid data + * pointer. + * + * client_initial_dcid must be the original DCID used by the client in its first + * Initial packet, as this is used to calculate the Retry Integrity Tag. + * + * Returns 0 if the tag is invalid, if called on any other type of packet or if + * the body is too short. + */ +int ossl_quic_validate_retry_integrity_tag(OSSL_LIB_CTX *libctx, + const char *propq, + const QUIC_PKT_HDR *hdr, + const QUIC_CONN_ID *client_initial_dcid); + +/* + * Calculates a retry integrity tag. Returns 0 on error, for example if hdr does + * not have a type of QUIC_PKT_TYPE_RETRY. + * + * client_initial_dcid must be the original DCID used by the client in its first + * Initial packet, as this is used to calculate the Retry Integrity Tag. + * + * tag must point to a buffer of QUIC_RETRY_INTEGRITY_TAG_LEN bytes in size. + * + * Note that hdr->data must point to the Retry packet body, and hdr->len must + * include the space for the Retry Integrity Tag. (This means that you can + * easily fill in a tag in a Retry packet you are generating by calling this + * function and passing (hdr->data + hdr->len - QUIC_RETRY_INTEGRITY_TAG_LEN) as + * the tag argument.) This function fails if hdr->len is too short to contain a + * Retry Integrity Tag. + */ +int ossl_quic_calculate_retry_integrity_tag(OSSL_LIB_CTX *libctx, + const char *propq, + const QUIC_PKT_HDR *hdr, + const QUIC_CONN_ID *client_initial_dcid, + unsigned char *tag); + +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/recordmethod.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/recordmethod.h new file mode 100644 index 00000000..53bd4ca6 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/recordmethod.h @@ -0,0 +1,339 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_RECORDMETHOD_H +# define OSSL_INTERNAL_RECORDMETHOD_H +# pragma once + +# include + +/* + * We use the term "record" here to refer to a packet of data. Records are + * typically protected via a cipher and MAC, or an AEAD cipher (although not + * always). This usage of the term record is consistent with the TLS concept. + * In QUIC the term "record" is not used but it is analogous to the QUIC term + * "packet". The interface in this file applies to all protocols that protect + * records/packets of data, i.e. (D)TLS and QUIC. The term record is used to + * refer to both contexts. + */ + +/* + * An OSSL_RECORD_METHOD is a protocol specific method which provides the + * functions for reading and writing records for that protocol. Which + * OSSL_RECORD_METHOD to use for a given protocol is defined by the SSL_METHOD. + */ +typedef struct ossl_record_method_st OSSL_RECORD_METHOD; + +/* + * An OSSL_RECORD_LAYER is just an externally defined opaque pointer created by + * the method + */ +typedef struct ossl_record_layer_st OSSL_RECORD_LAYER; + + +# define OSSL_RECORD_ROLE_CLIENT 0 +# define OSSL_RECORD_ROLE_SERVER 1 + +# define OSSL_RECORD_DIRECTION_READ 0 +# define OSSL_RECORD_DIRECTION_WRITE 1 + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +# define OSSL_RECORD_RETURN_SUCCESS 1 +# define OSSL_RECORD_RETURN_RETRY 0 +# define OSSL_RECORD_RETURN_NON_FATAL_ERR -1 +# define OSSL_RECORD_RETURN_FATAL -2 +# define OSSL_RECORD_RETURN_EOF -3 + +/* + * Template for creating a record. A record consists of the |type| of data it + * will contain (e.g. alert, handshake, application data, etc) along with a + * buffer of payload data in |buf| of length |buflen|. + */ +struct ossl_record_template_st { + unsigned char type; + unsigned int version; + const unsigned char *buf; + size_t buflen; +}; + +typedef struct ossl_record_template_st OSSL_RECORD_TEMPLATE; + +/* + * Rather than a "method" approach, we could make this fetchable - Should we? + * There could be some complexity in finding suitable record layer implementations + * e.g. we need to find one that matches the negotiated protocol, cipher, + * extensions, etc. The selection_cb approach given above doesn't work so well + * if unknown third party providers with OSSL_RECORD_METHOD implementations are + * loaded. + */ + +/* + * If this becomes public API then we will need functions to create and + * free an OSSL_RECORD_METHOD, as well as functions to get/set the various + * function pointers....unless we make it fetchable. + */ +struct ossl_record_method_st { + /* + * Create a new OSSL_RECORD_LAYER object for handling the protocol version + * set by |vers|. |role| is 0 for client and 1 for server. |direction| + * indicates either read or write. |level| is the protection level as + * described above. |settings| are mandatory settings that will cause the + * new() call to fail if they are not understood (for example to require + * Encrypt-Then-Mac support). |options| are optional settings that will not + * cause the new() call to fail if they are not understood (for example + * whether to use "read ahead" or not). + * + * The BIO in |transport| is the BIO for the underlying transport layer. + * Where the direction is "read", then this BIO will only ever be used for + * reading data. Where the direction is "write", then this BIO will only + * every be used for writing data. + * + * An SSL object will always have at least 2 OSSL_RECORD_LAYER objects in + * force at any one time (one for reading and one for writing). In some + * protocols more than 2 might be used (e.g. in DTLS for retransmitting + * messages from an earlier epoch). + * + * The created OSSL_RECORD_LAYER object is stored in *ret on success (or + * NULL otherwise). The return value will be one of + * OSSL_RECORD_RETURN_SUCCESS, OSSL_RECORD_RETURN_FATAL or + * OSSL_RECORD_RETURN_NON_FATAL. A non-fatal return means that creation of + * the record layer has failed because it is unsuitable, but an alternative + * record layer can be tried instead. + */ + + /* + * If we eventually make this fetchable then we will need to use something + * other than EVP_CIPHER. Also mactype would not be a NID, but a string. For + * now though, this works. + */ + int (*new_record_layer)(OSSL_LIB_CTX *libctx, + const char *propq, int vers, + int role, int direction, + int level, + uint16_t epoch, + unsigned char *secret, + size_t secretlen, + unsigned char *key, + size_t keylen, + unsigned char *iv, + size_t ivlen, + unsigned char *mackey, + size_t mackeylen, + const EVP_CIPHER *ciph, + size_t taglen, + int mactype, + const EVP_MD *md, + COMP_METHOD *comp, + const EVP_MD *kdfdigest, + BIO *prev, + BIO *transport, + BIO *next, + BIO_ADDR *local, + BIO_ADDR *peer, + const OSSL_PARAM *settings, + const OSSL_PARAM *options, + const OSSL_DISPATCH *fns, + void *cbarg, + void *rlarg, + OSSL_RECORD_LAYER **ret); + int (*free)(OSSL_RECORD_LAYER *rl); + + /* Returns 1 if we have unprocessed data buffered or 0 otherwise */ + int (*unprocessed_read_pending)(OSSL_RECORD_LAYER *rl); + + /* + * Returns 1 if we have processed data buffered that can be read or 0 otherwise + * - not necessarily app data + */ + int (*processed_read_pending)(OSSL_RECORD_LAYER *rl); + + /* + * The amount of processed app data that is internally buffered and + * available to read + */ + size_t (*app_data_pending)(OSSL_RECORD_LAYER *rl); + + /* + * Find out the maximum number of records that the record layer is prepared + * to process in a single call to write_records. It is the caller's + * responsibility to ensure that no call to write_records exceeds this + * number of records. |type| is the type of the records that the caller + * wants to write, and |len| is the total amount of data that it wants + * to send. |maxfrag| is the maximum allowed fragment size based on user + * configuration, or TLS parameter negotiation. |*preffrag| contains on + * entry the default fragment size that will actually be used based on user + * configuration. This will always be less than or equal to |maxfrag|. On + * exit the record layer may update this to an alternative fragment size to + * be used. This must always be less than or equal to |maxfrag|. + */ + size_t (*get_max_records)(OSSL_RECORD_LAYER *rl, uint8_t type, size_t len, + size_t maxfrag, size_t *preffrag); + + /* + * Write |numtempl| records from the array of record templates pointed to + * by |templates|. Each record should be no longer than the value returned + * by get_max_record_len(), and there should be no more records than the + * value returned by get_max_records(). + * Where possible the caller will attempt to ensure that all records are the + * same length, except the last record. This may not always be possible so + * the record method implementation should not rely on this being the case. + * In the event of a retry the caller should call retry_write_records() + * to try again. No more calls to write_records() should be attempted until + * retry_write_records() returns success. + * Buffers allocated for the record templates can be freed immediately after + * write_records() returns - even in the case a retry. + * The record templates represent the plaintext payload. The encrypted + * output is written to the |transport| BIO. + * Returns: + * 1 on success + * 0 on retry + * -1 on failure + */ + int (*write_records)(OSSL_RECORD_LAYER *rl, OSSL_RECORD_TEMPLATE *templates, + size_t numtempl); + + /* + * Retry a previous call to write_records. The caller should continue to + * call this until the function returns with success or failure. After + * each retry more of the data may have been incrementally sent. + * Returns: + * 1 on success + * 0 on retry + * -1 on failure + */ + int (*retry_write_records)(OSSL_RECORD_LAYER *rl); + + /* + * Read a record and return the record layer version and record type in + * the |rversion| and |type| parameters. |*data| is set to point to a + * record layer buffer containing the record payload data and |*datalen| + * is filled in with the length of that data. The |epoch| and |seq_num| + * values are only used if DTLS has been negotiated. In that case they are + * filled in with the epoch and sequence number from the record. + * An opaque record layer handle for the record is returned in |*rechandle| + * which is used in a subsequent call to |release_record|. The buffer must + * remain available until all the bytes from record are released via one or + * more release_record calls. + * + * Internally the OSSL_RECORD_METHOD implementation may read/process + * multiple records in one go and buffer them. + */ + int (*read_record)(OSSL_RECORD_LAYER *rl, void **rechandle, int *rversion, + uint8_t *type, const unsigned char **data, size_t *datalen, + uint16_t *epoch, unsigned char *seq_num); + /* + * Release length bytes from a buffer associated with a record previously + * read with read_record. Once all the bytes from a record are released, the + * whole record and its associated buffer is released. Records are + * guaranteed to be released in the order that they are read. + */ + int (*release_record)(OSSL_RECORD_LAYER *rl, void *rechandle, size_t length); + + /* + * In the event that a fatal error is returned from the functions above then + * get_alert_code() can be called to obtain a more details identifier for + * the error. In (D)TLS this is the alert description code. + */ + int (*get_alert_code)(OSSL_RECORD_LAYER *rl); + + /* + * Update the transport BIO from the one originally set in the + * new_record_layer call + */ + int (*set1_bio)(OSSL_RECORD_LAYER *rl, BIO *bio); + + /* Called when protocol negotiation selects a protocol version to use */ + int (*set_protocol_version)(OSSL_RECORD_LAYER *rl, int version); + + /* + * Whether we are allowed to receive unencrypted alerts, even if we might + * otherwise expect encrypted records. Ignored by protocol versions where + * this isn't relevant + */ + void (*set_plain_alerts)(OSSL_RECORD_LAYER *rl, int allow); + + /* + * Called immediately after creation of the record layer if we are in a + * first handshake. Also called at the end of the first handshake + */ + void (*set_first_handshake)(OSSL_RECORD_LAYER *rl, int first); + + /* + * Set the maximum number of pipelines that the record layer should process. + * The default is 1. + */ + void (*set_max_pipelines)(OSSL_RECORD_LAYER *rl, size_t max_pipelines); + + /* + * Called to tell the record layer whether we are currently "in init" or + * not. Default at creation of the record layer is "yes". + */ + void (*set_in_init)(OSSL_RECORD_LAYER *rl, int in_init); + + /* + * Get a short or long human readable description of the record layer state + */ + void (*get_state)(OSSL_RECORD_LAYER *rl, const char **shortstr, + const char **longstr); + + /* + * Set new options or modify ones that were originally specified in the + * new_record_layer call. + */ + int (*set_options)(OSSL_RECORD_LAYER *rl, const OSSL_PARAM *options); + + const COMP_METHOD *(*get_compression)(OSSL_RECORD_LAYER *rl); + + /* + * Set the maximum fragment length to be used for the record layer. This + * will override any previous value supplied for the "max_frag_len" + * setting during construction of the record layer. + */ + void (*set_max_frag_len)(OSSL_RECORD_LAYER *rl, size_t max_frag_len); + + /* + * The maximum expansion in bytes that the record layer might add while + * writing a record + */ + size_t (*get_max_record_overhead)(OSSL_RECORD_LAYER *rl); + + /* + * Increment the record sequence number + */ + int (*increment_sequence_ctr)(OSSL_RECORD_LAYER *rl); + + /* + * Allocate read or write buffers. Does nothing if already allocated. + * Assumes default buffer length and 1 pipeline. + */ + int (*alloc_buffers)(OSSL_RECORD_LAYER *rl); + + /* + * Free read or write buffers. Fails if there is pending read or write + * data. Buffers are automatically reallocated on next read/write. + */ + int (*free_buffers)(OSSL_RECORD_LAYER *rl); +}; + + +/* Standard built-in record methods */ +extern const OSSL_RECORD_METHOD ossl_tls_record_method; +# ifndef OPENSSL_NO_KTLS +extern const OSSL_RECORD_METHOD ossl_ktls_record_method; +# endif +extern const OSSL_RECORD_METHOD ossl_dtls_record_method; + +#endif /* !defined(OSSL_INTERNAL_RECORDMETHOD_H) */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/refcount.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/refcount.h index 3392d3b4..4c9ab266 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/refcount.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/refcount.h @@ -12,6 +12,7 @@ # include # include +# include # if defined(OPENSSL_THREADS) && !defined(OPENSSL_DEV_NO_ATOMICS) # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ @@ -25,12 +26,13 @@ # define HAVE_ATOMICS 1 -typedef _Atomic int CRYPTO_REF_COUNT; +typedef struct { + _Atomic int val; +} CRYPTO_REF_COUNT; -static inline int CRYPTO_UP_REF(_Atomic int *val, int *ret, - ossl_unused void *lock) +static inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = atomic_fetch_add_explicit(val, 1, memory_order_relaxed) + 1; + *ret = atomic_fetch_add_explicit(&refcnt->val, 1, memory_order_relaxed) + 1; return 1; } @@ -44,50 +46,70 @@ static inline int CRYPTO_UP_REF(_Atomic int *val, int *ret, * to mutable members doesn't have to be serialized anymore, which would * otherwise imply an acquire fence. Hence conditional acquire fence... */ -static inline int CRYPTO_DOWN_REF(_Atomic int *val, int *ret, - ossl_unused void *lock) +static inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1; + *ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_relaxed) - 1; if (*ret == 0) atomic_thread_fence(memory_order_acquire); return 1; } +static inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = atomic_load_explicit(&refcnt->val, memory_order_relaxed); + return 1; +} + # elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) && __GCC_ATOMIC_INT_LOCK_FREE > 0 # define HAVE_ATOMICS 1 -typedef int CRYPTO_REF_COUNT; +typedef struct { + int val; +} CRYPTO_REF_COUNT; -static __inline__ int CRYPTO_UP_REF(int *val, int *ret, ossl_unused void *lock) +static __inline__ int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = __atomic_fetch_add(val, 1, __ATOMIC_RELAXED) + 1; + *ret = __atomic_fetch_add(&refcnt->val, 1, __ATOMIC_RELAXED) + 1; return 1; } -static __inline__ int CRYPTO_DOWN_REF(int *val, int *ret, - ossl_unused void *lock) +static __inline__ int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = __atomic_fetch_sub(val, 1, __ATOMIC_RELAXED) - 1; + *ret = __atomic_fetch_sub(&refcnt->val, 1, __ATOMIC_RELAXED) - 1; if (*ret == 0) __atomic_thread_fence(__ATOMIC_ACQUIRE); return 1; } -# elif defined(__ICL) && defined(_WIN32) -# define HAVE_ATOMICS 1 -typedef volatile int CRYPTO_REF_COUNT; -static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline__ int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd((void *)val, 1) + 1; + *ret = __atomic_load_n(&refcnt->val, __ATOMIC_RELAXED); return 1; } -static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, - ossl_unused void *lock) +# elif defined(__ICL) && defined(_WIN32) +# define HAVE_ATOMICS 1 + +typedef struct { + volatile int val; +} CRYPTO_REF_COUNT; + +static __inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd((void *)val, -1) - 1; + *ret = _InterlockedExchangeAdd((void *)&refcnt->val, 1) + 1; + return 1; +} + +static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *val, int *refcnt) +{ + *ret = _InterlockedExchangeAdd((void *)&refcnt->val, -1) - 1; + return 1; +} + +static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = _InterlockedOr((void *)&refcnt->val, 0); return 1; } @@ -95,7 +117,9 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, # define HAVE_ATOMICS 1 -typedef volatile int CRYPTO_REF_COUNT; +typedef struct { + volatile int val; +} CRYPTO_REF_COUNT; # if (defined(_M_ARM) && _M_ARM>=7 && !defined(_WIN32_WCE)) || defined(_M_ARM64) # include @@ -103,21 +127,26 @@ typedef volatile int CRYPTO_REF_COUNT; # define _ARM_BARRIER_ISH _ARM64_BARRIER_ISH # endif -static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd_nf(val, 1) + 1; + *ret = _InterlockedExchangeAdd_nf(&refcnt->val, 1) + 1; return 1; } -static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd_nf(val, -1) - 1; + *ret = _InterlockedExchangeAdd_nf(&refcnt->val, -1) - 1; if (*ret == 0) __dmb(_ARM_BARRIER_ISH); return 1; } + +static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = _InterlockedOr_nf((void *)&refcnt->val, 0); + return 1; +} + # else # if !defined(_WIN32_WCE) # pragma intrinsic(_InterlockedExchangeAdd) @@ -131,19 +160,24 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, # endif # endif -static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd(val, 1) + 1; + *ret = _InterlockedExchangeAdd(&refcnt->val, 1) + 1; return 1; } -static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd(val, -1) - 1; + *ret = _InterlockedExchangeAdd(&refcnt->val, -1) - 1; return 1; } + +static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = _InterlockedExchangeAdd(&refcnt->val, 0); + return 1; +} + # endif # endif @@ -156,13 +190,92 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, */ # ifndef HAVE_ATOMICS -typedef int CRYPTO_REF_COUNT; +typedef struct { + int val; +# ifdef OPENSSL_THREADS + CRYPTO_RWLOCK *lock; +# endif +} CRYPTO_REF_COUNT; -# define CRYPTO_UP_REF(val, ret, lock) CRYPTO_atomic_add(val, 1, ret, lock) -# define CRYPTO_DOWN_REF(val, ret, lock) CRYPTO_atomic_add(val, -1, ret, lock) +# ifdef OPENSSL_THREADS +static ossl_unused ossl_inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + return CRYPTO_atomic_add(&refcnt->val, 1, ret, refcnt->lock); +} + +static ossl_unused ossl_inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + return CRYPTO_atomic_add(&refcnt->val, -1, ret, refcnt->lock); +} + +static ossl_unused ossl_inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + return CRYPTO_atomic_load_int(&refcnt->val, ret, refcnt->lock); +} + +# define CRYPTO_NEW_FREE_DEFINED 1 +static ossl_unused ossl_inline int CRYPTO_NEW_REF(CRYPTO_REF_COUNT *refcnt, int n) +{ + refcnt->val = n; + refcnt->lock = CRYPTO_THREAD_lock_new(); + if (refcnt->lock == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_CRYPTO_LIB); + return 0; + } + return 1; +} + +static ossl_unused ossl_inline void CRYPTO_FREE_REF(CRYPTO_REF_COUNT *refcnt) \ +{ + if (refcnt != NULL) + CRYPTO_THREAD_lock_free(refcnt->lock); +} + +# else /* OPENSSL_THREADS */ + +static ossl_unused ossl_inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + refcnt->val++; + *ret = refcnt->val; + return 1; +} + +static ossl_unused ossl_inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + refcnt->val--; + *ret = refcnt->val; + return 1; +} + +static ossl_unused ossl_inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + *ret = refcnt->val; + return 1; +} + +# endif /* OPENSSL_THREADS */ # endif +# ifndef CRYPTO_NEW_FREE_DEFINED +static ossl_unused ossl_inline int CRYPTO_NEW_REF(CRYPTO_REF_COUNT *refcnt, int n) +{ + refcnt->val = n; + return 1; +} + +static ossl_unused ossl_inline void CRYPTO_FREE_REF(CRYPTO_REF_COUNT *refcnt) \ +{ +} +# endif /* CRYPTO_NEW_FREE_DEFINED */ +#undef CRYPTO_NEW_FREE_DEFINED + # if !defined(NDEBUG) && !defined(OPENSSL_NO_STDIO) # define REF_ASSERT_ISNT(test) \ (void)((test) ? (OPENSSL_die("refcount error", __FILE__, __LINE__), 1) : 0) @@ -173,6 +286,6 @@ typedef int CRYPTO_REF_COUNT; # define REF_PRINT_EX(text, count, object) \ OSSL_TRACE3(REF_COUNT, "%p:%4d:%s\n", (object), (count), (text)); # define REF_PRINT_COUNT(text, object) \ - REF_PRINT_EX(text, object->references, (void *)object) + REF_PRINT_EX(text, object->references.val, (void *)object) #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ring_buf.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ring_buf.h new file mode 100644 index 00000000..436f1ca1 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ring_buf.h @@ -0,0 +1,277 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_RING_BUF_H +# define OSSL_INTERNAL_RING_BUF_H +# pragma once + +# include /* For 'ossl_inline' */ +# include "internal/safe_math.h" + +/* + * ================================================================== + * Byte-wise ring buffer which supports pushing and popping blocks of multiple + * bytes at a time. The logical offset of each byte for the purposes of a QUIC + * stream is tracked. Bytes can be popped from the ring buffer in two stages; + * first they are popped, and then they are culled. Bytes which have been popped + * but not yet culled will not be overwritten, and can be restored. + */ +struct ring_buf { + void *start; + size_t alloc; /* size of buffer allocation in bytes */ + + /* + * Logical offset of the head (where we append to). This is the current size + * of the QUIC stream. This increases monotonically. + */ + uint64_t head_offset; + + /* + * Logical offset of the cull tail. Data is no longer needed and is + * deallocated as the cull tail advances, which occurs as data is + * acknowledged. This increases monotonically. + */ + uint64_t ctail_offset; +}; + +OSSL_SAFE_MATH_UNSIGNED(u64, uint64_t) + +#define MAX_OFFSET (((uint64_t)1) << 62) /* QUIC-imposed limit */ + +static ossl_inline int ring_buf_init(struct ring_buf *r) +{ + r->start = NULL; + r->alloc = 0; + r->head_offset = r->ctail_offset = 0; + return 1; +} + +static ossl_inline void ring_buf_destroy(struct ring_buf *r, int cleanse) +{ + if (cleanse) + OPENSSL_clear_free(r->start, r->alloc); + else + OPENSSL_free(r->start); + r->start = NULL; + r->alloc = 0; +} + +static ossl_inline size_t ring_buf_used(struct ring_buf *r) +{ + return (size_t)(r->head_offset - r->ctail_offset); +} + +static ossl_inline size_t ring_buf_avail(struct ring_buf *r) +{ + return r->alloc - ring_buf_used(r); +} + +static ossl_inline int ring_buf_write_at(struct ring_buf *r, + uint64_t logical_offset, + const unsigned char *buf, + size_t buf_len) +{ + size_t avail, idx, l; + unsigned char *start = r->start; + int i, err = 0; + + avail = ring_buf_avail(r); + if (logical_offset < r->ctail_offset + || safe_add_u64(logical_offset, buf_len, &err) + > safe_add_u64(r->head_offset, avail, &err) + || safe_add_u64(r->head_offset, buf_len, &err) + > MAX_OFFSET + || err) + return 0; + + for (i = 0; buf_len > 0 && i < 2; ++i) { + idx = logical_offset % r->alloc; + l = r->alloc - idx; + if (buf_len < l) + l = buf_len; + + memcpy(start + idx, buf, l); + if (r->head_offset < logical_offset + l) + r->head_offset = logical_offset + l; + + logical_offset += l; + buf += l; + buf_len -= l; + } + + assert(buf_len == 0); + + return 1; +} + +static ossl_inline size_t ring_buf_push(struct ring_buf *r, + const unsigned char *buf, + size_t buf_len) +{ + size_t pushed = 0, avail, idx, l; + unsigned char *start = r->start; + + for (;;) { + avail = ring_buf_avail(r); + if (buf_len > avail) + buf_len = avail; + + if (buf_len > MAX_OFFSET - r->head_offset) + buf_len = (size_t)(MAX_OFFSET - r->head_offset); + + if (buf_len == 0) + break; + + idx = r->head_offset % r->alloc; + l = r->alloc - idx; + if (buf_len < l) + l = buf_len; + + memcpy(start + idx, buf, l); + r->head_offset += l; + buf += l; + buf_len -= l; + pushed += l; + } + + return pushed; +} + +static ossl_inline const unsigned char *ring_buf_get_ptr(const struct ring_buf *r, + uint64_t logical_offset, + size_t *max_len) +{ + unsigned char *start = r->start; + size_t idx; + + if (logical_offset >= r->head_offset || logical_offset < r->ctail_offset) + return NULL; + idx = logical_offset % r->alloc; + *max_len = r->alloc - idx; + return start + idx; +} + +/* + * Retrieves data out of the read side of the ring buffer starting at the given + * logical offset. *buf is set to point to a contiguous span of bytes and + * *buf_len is set to the number of contiguous bytes. After this function + * returns, there may or may not be more bytes available at the logical offset + * of (logical_offset + *buf_len) by calling this function again. If the logical + * offset is out of the range retained by the ring buffer, returns 0, else + * returns 1. A logical offset at the end of the range retained by the ring + * buffer is not considered an error and is returned with a *buf_len of 0. + * + * The ring buffer state is not changed. + */ +static ossl_inline int ring_buf_get_buf_at(const struct ring_buf *r, + uint64_t logical_offset, + const unsigned char **buf, + size_t *buf_len) +{ + const unsigned char *start = r->start; + size_t idx, l; + + if (logical_offset > r->head_offset || logical_offset < r->ctail_offset) + return 0; + + if (r->alloc == 0) { + *buf = NULL; + *buf_len = 0; + return 1; + } + + idx = logical_offset % r->alloc; + l = (size_t)(r->head_offset - logical_offset); + if (l > r->alloc - idx) + l = r->alloc - idx; + + *buf = start + idx; + *buf_len = l; + return 1; +} + +static ossl_inline void ring_buf_cpop_range(struct ring_buf *r, + uint64_t start, uint64_t end, + int cleanse) +{ + assert(end >= start); + + if (start > r->ctail_offset || end >= MAX_OFFSET) + return; + + if (cleanse && r->alloc > 0 && end > r->ctail_offset) { + size_t idx = r->ctail_offset % r->alloc; + uint64_t cleanse_end = end + 1; + size_t l; + + if (cleanse_end > r->head_offset) + cleanse_end = r->head_offset; + l = (size_t)(cleanse_end - r->ctail_offset); + if (l > r->alloc - idx) { + OPENSSL_cleanse((unsigned char *)r->start + idx, r->alloc - idx); + l -= r->alloc - idx; + idx = 0; + } + if (l > 0) + OPENSSL_cleanse((unsigned char *)r->start + idx, l); + } + + r->ctail_offset = end + 1; + /* Allow culling unpushed data */ + if (r->head_offset < r->ctail_offset) + r->head_offset = r->ctail_offset; +} + +static ossl_inline int ring_buf_resize(struct ring_buf *r, size_t num_bytes, + int cleanse) +{ + struct ring_buf rnew = {0}; + const unsigned char *src = NULL; + size_t src_len = 0, copied = 0; + + if (num_bytes == r->alloc) + return 1; + + if (num_bytes < ring_buf_used(r)) + return 0; + + rnew.start = OPENSSL_malloc(num_bytes); + if (rnew.start == NULL) + return 0; + + rnew.alloc = num_bytes; + rnew.head_offset = r->head_offset - ring_buf_used(r); + rnew.ctail_offset = rnew.head_offset; + + for (;;) { + if (!ring_buf_get_buf_at(r, r->ctail_offset + copied, &src, &src_len)) { + OPENSSL_free(rnew.start); + return 0; + } + + if (src_len == 0) + break; + + if (ring_buf_push(&rnew, src, src_len) != src_len) { + OPENSSL_free(rnew.start); + return 0; + } + + copied += src_len; + } + + assert(rnew.head_offset == r->head_offset); + rnew.ctail_offset = r->ctail_offset; + + ring_buf_destroy(r, cleanse); + memcpy(r, &rnew, sizeof(*r)); + return 1; +} + +#endif /* OSSL_INTERNAL_RING_BUF_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/safe_math.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/safe_math.h new file mode 100644 index 00000000..be37e6ab --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/safe_math.h @@ -0,0 +1,443 @@ +/* + * Copyright 2021-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_SAFE_MATH_H +# define OSSL_INTERNAL_SAFE_MATH_H +# pragma once + +# include /* For 'ossl_inline' */ + +# ifndef OPENSSL_NO_BUILTIN_OVERFLOW_CHECKING +# ifdef __has_builtin +# define has(func) __has_builtin(func) +# elif __GNUC__ > 5 +# define has(func) 1 +# endif +# endif /* OPENSSL_NO_BUILTIN_OVERFLOW_CHECKING */ + +# ifndef has +# define has(func) 0 +# endif + +/* + * Safe addition helpers + */ +# if has(__builtin_add_overflow) +# define OSSL_SAFE_MATH_ADDS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_add_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# define OSSL_SAFE_MATH_ADDU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_add_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a + b; \ + } + +# else /* has(__builtin_add_overflow) */ +# define OSSL_SAFE_MATH_ADDS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if ((a < 0) ^ (b < 0) \ + || (a > 0 && b <= max - a) \ + || (a < 0 && b >= min - a) \ + || a == 0) \ + return a + b; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# define OSSL_SAFE_MATH_ADDU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b > max - a) \ + *err |= 1; \ + return a + b; \ + } +# endif /* has(__builtin_add_overflow) */ + +/* + * Safe subtraction helpers + */ +# if has(__builtin_sub_overflow) +# define OSSL_SAFE_MATH_SUBS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_sub_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_sub_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# else /* has(__builtin_sub_overflow) */ +# define OSSL_SAFE_MATH_SUBS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_sub_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (!((a < 0) ^ (b < 0)) \ + || (b > 0 && a >= min + b) \ + || (b < 0 && a <= max + b) \ + || b == 0) \ + return a - b; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# endif /* has(__builtin_sub_overflow) */ + +# define OSSL_SAFE_MATH_SUBU(type_name, type) \ + static ossl_inline ossl_unused type safe_sub_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b > a) \ + *err |= 1; \ + return a - b; \ + } + +/* + * Safe multiplication helpers + */ +# if has(__builtin_mul_overflow) +# define OSSL_SAFE_MATH_MULS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_mul_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return (a < 0) ^ (b < 0) ? min : max; \ + } + +# define OSSL_SAFE_MATH_MULU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_mul_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a * b; \ + } + +# else /* has(__builtin_mul_overflow) */ +# define OSSL_SAFE_MATH_MULS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (a == 0 || b == 0) \ + return 0; \ + if (a == 1) \ + return b; \ + if (b == 1) \ + return a; \ + if (a != min && b != min) { \ + const type x = a < 0 ? -a : a; \ + const type y = b < 0 ? -b : b; \ + \ + if (x <= max / y) \ + return a * b; \ + } \ + *err |= 1; \ + return (a < 0) ^ (b < 0) ? min : max; \ + } + +# define OSSL_SAFE_MATH_MULU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b != 0 && a > max / b) \ + *err |= 1; \ + return a * b; \ + } +# endif /* has(__builtin_mul_overflow) */ + +/* + * Safe division helpers + */ +# define OSSL_SAFE_MATH_DIVS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_div_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b == 0) { \ + *err |= 1; \ + return a < 0 ? min : max; \ + } \ + if (b == -1 && a == min) { \ + *err |= 1; \ + return max; \ + } \ + return a / b; \ + } + +# define OSSL_SAFE_MATH_DIVU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_div_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b != 0) \ + return a / b; \ + *err |= 1; \ + return max; \ + } + +/* + * Safe modulus helpers + */ +# define OSSL_SAFE_MATH_MODS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_mod_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b == 0) { \ + *err |= 1; \ + return 0; \ + } \ + if (b == -1 && a == min) { \ + *err |= 1; \ + return max; \ + } \ + return a % b; \ + } + +# define OSSL_SAFE_MATH_MODU(type_name, type) \ + static ossl_inline ossl_unused type safe_mod_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b != 0) \ + return a % b; \ + *err |= 1; \ + return 0; \ + } + +/* + * Safe negation helpers + */ +# define OSSL_SAFE_MATH_NEGS(type_name, type, min) \ + static ossl_inline ossl_unused type safe_neg_ ## type_name(type a, \ + int *err) \ + { \ + if (a != min) \ + return -a; \ + *err |= 1; \ + return min; \ + } + +# define OSSL_SAFE_MATH_NEGU(type_name, type) \ + static ossl_inline ossl_unused type safe_neg_ ## type_name(type a, \ + int *err) \ + { \ + if (a == 0) \ + return a; \ + *err |= 1; \ + return 1 + ~a; \ + } + +/* + * Safe absolute value helpers + */ +# define OSSL_SAFE_MATH_ABSS(type_name, type, min) \ + static ossl_inline ossl_unused type safe_abs_ ## type_name(type a, \ + int *err) \ + { \ + if (a != min) \ + return a < 0 ? -a : a; \ + *err |= 1; \ + return min; \ + } + +# define OSSL_SAFE_MATH_ABSU(type_name, type) \ + static ossl_inline ossl_unused type safe_abs_ ## type_name(type a, \ + int *err) \ + { \ + return a; \ + } + +/* + * Safe fused multiply divide helpers + * + * These are a bit obscure: + * . They begin by checking the denominator for zero and getting rid of this + * corner case. + * + * . Second is an attempt to do the multiplication directly, if it doesn't + * overflow, the quotient is returned (for signed values there is a + * potential problem here which isn't present for unsigned). + * + * . Finally, the multiplication/division is transformed so that the larger + * of the numerators is divided first. This requires a remainder + * correction: + * + * a b / c = (a / c) b + (a mod c) b / c, where a > b + * + * The individual operations need to be overflow checked (again signed + * being more problematic). + * + * The algorithm used is not perfect but it should be "good enough". + */ +# define OSSL_SAFE_MATH_MULDIVS(type_name, type, max) \ + static ossl_inline ossl_unused type safe_muldiv_ ## type_name(type a, \ + type b, \ + type c, \ + int *err) \ + { \ + int e2 = 0; \ + type q, r, x, y; \ + \ + if (c == 0) { \ + *err |= 1; \ + return a == 0 || b == 0 ? 0 : max; \ + } \ + x = safe_mul_ ## type_name(a, b, &e2); \ + if (!e2) \ + return safe_div_ ## type_name(x, c, err); \ + if (b > a) { \ + x = b; \ + b = a; \ + a = x; \ + } \ + q = safe_div_ ## type_name(a, c, err); \ + r = safe_mod_ ## type_name(a, c, err); \ + x = safe_mul_ ## type_name(r, b, err); \ + y = safe_mul_ ## type_name(q, b, err); \ + q = safe_div_ ## type_name(x, c, err); \ + return safe_add_ ## type_name(y, q, err); \ + } + +# define OSSL_SAFE_MATH_MULDIVU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_muldiv_ ## type_name(type a, \ + type b, \ + type c, \ + int *err) \ + { \ + int e2 = 0; \ + type x, y; \ + \ + if (c == 0) { \ + *err |= 1; \ + return a == 0 || b == 0 ? 0 : max; \ + } \ + x = safe_mul_ ## type_name(a, b, &e2); \ + if (!e2) \ + return x / c; \ + if (b > a) { \ + x = b; \ + b = a; \ + a = x; \ + } \ + x = safe_mul_ ## type_name(a % c, b, err); \ + y = safe_mul_ ## type_name(a / c, b, err); \ + return safe_add_ ## type_name(y, x / c, err); \ + } + +/* + * Calculate a / b rounding up: + * i.e. a / b + (a % b != 0) + * Which is usually (less safely) converted to (a + b - 1) / b + * If you *know* that b != 0, then it's safe to ignore err. + */ +#define OSSL_SAFE_MATH_DIV_ROUND_UP(type_name, type, max) \ + static ossl_inline ossl_unused type safe_div_round_up_ ## type_name \ + (type a, type b, int *errp) \ + { \ + type x; \ + int *err, err_local = 0; \ + \ + /* Allow errors to be ignored by callers */ \ + err = errp != NULL ? errp : &err_local; \ + /* Fast path, both positive */ \ + if (b > 0 && a > 0) { \ + /* Faster path: no overflow concerns */ \ + if (a < max - b) \ + return (a + b - 1) / b; \ + return a / b + (a % b != 0); \ + } \ + if (b == 0) { \ + *err |= 1; \ + return a == 0 ? 0 : max; \ + } \ + if (a == 0) \ + return 0; \ + /* Rather slow path because there are negatives involved */ \ + x = safe_mod_ ## type_name(a, b, err); \ + return safe_add_ ## type_name(safe_div_ ## type_name(a, b, err), \ + x != 0, err); \ + } + +/* Calculate ranges of types */ +# define OSSL_SAFE_MATH_MINS(type) ((type)1 << (sizeof(type) * 8 - 1)) +# define OSSL_SAFE_MATH_MAXS(type) (~OSSL_SAFE_MATH_MINS(type)) +# define OSSL_SAFE_MATH_MAXU(type) (~(type)0) + +/* + * Wrapper macros to create all the functions of a given type + */ +# define OSSL_SAFE_MATH_SIGNED(type_name, type) \ + OSSL_SAFE_MATH_ADDS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_SUBS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_MULS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_DIVS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_MODS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_DIV_ROUND_UP(type_name, type, \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_MULDIVS(type_name, type, OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_NEGS(type_name, type, OSSL_SAFE_MATH_MINS(type)) \ + OSSL_SAFE_MATH_ABSS(type_name, type, OSSL_SAFE_MATH_MINS(type)) + +# define OSSL_SAFE_MATH_UNSIGNED(type_name, type) \ + OSSL_SAFE_MATH_ADDU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_SUBU(type_name, type) \ + OSSL_SAFE_MATH_MULU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_DIVU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_MODU(type_name, type) \ + OSSL_SAFE_MATH_DIV_ROUND_UP(type_name, type, \ + OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_MULDIVU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_NEGU(type_name, type) \ + OSSL_SAFE_MATH_ABSU(type_name, type) + +#endif /* OSSL_INTERNAL_SAFE_MATH_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/sockets.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/sockets.h index 1f5fefcc..2550c56b 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/sockets.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/sockets.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -61,7 +61,25 @@ struct servent *PASCAL getservbyname(const char *, const char *); # define accept(s,f,l) ((int)accept(s,f,l)) # endif +/* Windows have other names for shutdown() reasons */ +# ifndef SHUT_RD +# define SHUT_RD SD_RECEIVE +# endif +# ifndef SHUT_WR +# define SHUT_WR SD_SEND +# endif +# ifndef SHUT_RDWR +# define SHUT_RDWR SD_BOTH +# endif + # else +# if defined(__APPLE__) + /* + * This must be defined before including to get + * IPV6_RECVPKTINFO + */ +# define __APPLE_USE_RFC_3542 +# endif # ifndef NO_SYS_PARAM_H # include @@ -71,6 +89,9 @@ struct servent *PASCAL getservbyname(const char *, const char *); # endif # include +# if defined(OPENSSL_SYS_VMS) +typedef size_t socklen_t; /* Currently appears to be missing on VMS */ +# endif # if defined(OPENSSL_SYS_VMS_NODECC) # include # include @@ -95,6 +116,13 @@ struct servent *PASCAL getservbyname(const char *, const char *); # include # endif +# ifdef OPENSSL_SYS_UNIX +# ifndef OPENSSL_SYS_TANDEM +# include +# endif +# include +# endif + # ifndef VMS # include # else @@ -136,12 +164,15 @@ struct servent *PASCAL getservbyname(const char *, const char *); # define get_last_socket_error() errno # define clear_socket_error() errno=0 +# define get_last_socket_error_is_eintr() (get_last_socket_error() == EINTR) # if defined(OPENSSL_SYS_WINDOWS) # undef get_last_socket_error # undef clear_socket_error +# undef get_last_socket_error_is_eintr # define get_last_socket_error() WSAGetLastError() # define clear_socket_error() WSASetLastError(0) +# define get_last_socket_error_is_eintr() (get_last_socket_error() == WSAEINTR) # define readsocket(s,b,n) recv((s),(b),(n),0) # define writesocket(s,b,n) send((s),(b),(n),0) # elif defined(__DJGPP__) diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl.h new file mode 100644 index 00000000..8a0c7974 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl.h @@ -0,0 +1,24 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef OSSL_INTERNAL_SSL_H +# define OSSL_INTERNAL_SSL_H +# pragma once + +typedef void (*ossl_msg_cb)(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + +int ossl_ssl_get_error(const SSL *s, int i, int check_err); + +/* Set if this is the QUIC handshake layer */ +# define TLS1_FLAGS_QUIC 0x2000 + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl3_cbc.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl3_cbc.h new file mode 100644 index 00000000..4fb5da19 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/ssl3_cbc.h @@ -0,0 +1,40 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +/* tls_pad.c */ +int ssl3_cbc_remove_padding_and_mac(size_t *reclen, + size_t origreclen, + unsigned char *recdata, + unsigned char **mac, + int *alloced, + size_t block_size, size_t mac_size, + OSSL_LIB_CTX *libctx); + +int tls1_cbc_remove_padding_and_mac(size_t *reclen, + size_t origreclen, + unsigned char *recdata, + unsigned char **mac, + int *alloced, + size_t block_size, size_t mac_size, + int aead, + OSSL_LIB_CTX *libctx); + +/* ssl3_cbc.c */ +__owur char ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx); +__owur int ssl3_cbc_digest_record(const EVP_MD *md, + unsigned char *md_out, + size_t *md_out_size, + const unsigned char *header, + const unsigned char *data, + size_t data_size, + size_t data_plus_mac_plus_padding_size, + const unsigned char *mac_secret, + size_t mac_secret_length, char is_sslv3); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/statem.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/statem.h new file mode 100644 index 00000000..136e6523 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/statem.h @@ -0,0 +1,171 @@ +/* + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_INTERNAL_STATEM_H +# define OSSL_INTERNAL_STATEM_H + +/***************************************************************************** + * * + * These enums should be considered PRIVATE to the state machine. No * + * non-state machine code should need to use these * + * * + *****************************************************************************/ +/* + * Valid return codes used for functions performing work prior to or after + * sending or receiving a message + */ +typedef enum { + /* Something went wrong */ + WORK_ERROR, + /* We're done working and there shouldn't be anything else to do after */ + WORK_FINISHED_STOP, + /* We're done working move onto the next thing */ + WORK_FINISHED_CONTINUE, + /* We're working on phase A */ + WORK_MORE_A, + /* We're working on phase B */ + WORK_MORE_B, + /* We're working on phase C */ + WORK_MORE_C +} WORK_STATE; + +/* Write transition return codes */ +typedef enum { + /* Something went wrong */ + WRITE_TRAN_ERROR, + /* A transition was successfully completed and we should continue */ + WRITE_TRAN_CONTINUE, + /* There is no more write work to be done */ + WRITE_TRAN_FINISHED +} WRITE_TRAN; + +/* Message flow states */ +typedef enum { + /* No handshake in progress */ + MSG_FLOW_UNINITED, + /* A permanent error with this connection */ + MSG_FLOW_ERROR, + /* We are reading messages */ + MSG_FLOW_READING, + /* We are writing messages */ + MSG_FLOW_WRITING, + /* Handshake has finished */ + MSG_FLOW_FINISHED +} MSG_FLOW_STATE; + +/* Read states */ +typedef enum { + READ_STATE_HEADER, + READ_STATE_BODY, + READ_STATE_POST_PROCESS +} READ_STATE; + +/* Write states */ +typedef enum { + WRITE_STATE_TRANSITION, + WRITE_STATE_PRE_WORK, + WRITE_STATE_SEND, + WRITE_STATE_POST_WORK +} WRITE_STATE; + +typedef enum { + CON_FUNC_ERROR = 0, + CON_FUNC_SUCCESS, + CON_FUNC_DONT_SEND +} CON_FUNC_RETURN; + +typedef int (*ossl_statem_mutate_handshake_cb)(const unsigned char *msgin, + size_t inlen, + unsigned char **msgout, + size_t *outlen, + void *arg); + +typedef void (*ossl_statem_finish_mutate_handshake_cb)(void *arg); + +/***************************************************************************** + * * + * This structure should be considered "opaque" to anything outside of the * + * state machine. No non-state machine code should be accessing the members * + * of this structure. * + * * + *****************************************************************************/ + +struct ossl_statem_st { + MSG_FLOW_STATE state; + WRITE_STATE write_state; + WORK_STATE write_state_work; + READ_STATE read_state; + WORK_STATE read_state_work; + OSSL_HANDSHAKE_STATE hand_state; + /* The handshake state requested by an API call (e.g. HelloRequest) */ + OSSL_HANDSHAKE_STATE request_state; + int in_init; + int read_state_first_init; + /* true when we are actually in SSL_accept() or SSL_connect() */ + int in_handshake; + /* + * True when are processing a "real" handshake that needs cleaning up (not + * just a HelloRequest or similar). + */ + int cleanuphand; + /* Should we skip the CertificateVerify message? */ + unsigned int no_cert_verify; + int use_timer; + + /* Test harness message mutator callbacks */ + ossl_statem_mutate_handshake_cb mutate_handshake_cb; + ossl_statem_finish_mutate_handshake_cb finish_mutate_handshake_cb; + void *mutatearg; + unsigned int write_in_progress : 1; +}; +typedef struct ossl_statem_st OSSL_STATEM; + +/***************************************************************************** + * * + * The following macros/functions represent the libssl internal API to the * + * state machine. Any libssl code may call these functions/macros * + * * + *****************************************************************************/ + +typedef struct ssl_connection_st SSL_CONNECTION; + +__owur int ossl_statem_accept(SSL *s); +__owur int ossl_statem_connect(SSL *s); +OSSL_HANDSHAKE_STATE ossl_statem_get_state(SSL_CONNECTION *s); +void ossl_statem_clear(SSL_CONNECTION *s); +void ossl_statem_set_renegotiate(SSL_CONNECTION *s); +void ossl_statem_send_fatal(SSL_CONNECTION *s, int al); +void ossl_statem_fatal(SSL_CONNECTION *s, int al, int reason, + const char *fmt, ...); +# define SSLfatal_alert(s, al) ossl_statem_send_fatal((s), (al)) +# define SSLfatal(s, al, r) SSLfatal_data((s), (al), (r), NULL) +# define SSLfatal_data \ + (ERR_new(), \ + ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \ + ossl_statem_fatal) + +int ossl_statem_in_error(const SSL_CONNECTION *s); +void ossl_statem_set_in_init(SSL_CONNECTION *s, int init); +int ossl_statem_get_in_handshake(SSL_CONNECTION *s); +void ossl_statem_set_in_handshake(SSL_CONNECTION *s, int inhand); +__owur int ossl_statem_skip_early_data(SSL_CONNECTION *s); +void ossl_statem_check_finish_init(SSL_CONNECTION *s, int send); +void ossl_statem_set_hello_verify_done(SSL_CONNECTION *s); +__owur int ossl_statem_app_data_allowed(SSL_CONNECTION *s); +__owur int ossl_statem_export_allowed(SSL_CONNECTION *s); +__owur int ossl_statem_export_early_allowed(SSL_CONNECTION *s); + +/* Flush the write BIO */ +int statem_flush(SSL_CONNECTION *s); + +int ossl_statem_set_mutator(SSL *s, + ossl_statem_mutate_handshake_cb mutate_handshake_cb, + ossl_statem_finish_mutate_handshake_cb finish_mutate_handshake_cb, + void *mutatearg); + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread.h new file mode 100644 index 00000000..8c5bad77 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread.h @@ -0,0 +1,39 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_INTERNAL_THREAD_H +# define OPENSSL_INTERNAL_THREAD_H +# include +# include +# include +# include +# include +# include "crypto/context.h" + +void *ossl_crypto_thread_start(OSSL_LIB_CTX *ctx, CRYPTO_THREAD_ROUTINE start, + void *data); +int ossl_crypto_thread_join(void *task, CRYPTO_THREAD_RETVAL *retval); +int ossl_crypto_thread_clean(void *vhandle); +uint64_t ossl_get_avail_threads(OSSL_LIB_CTX *ctx); + +# if defined(OPENSSL_THREADS) + +# define OSSL_LIB_CTX_GET_THREADS(CTX) \ + ossl_lib_ctx_get_data(CTX, OSSL_LIB_CTX_THREAD_INDEX); + +typedef struct openssl_threads_st { + uint64_t max_threads; + uint64_t active_threads; + CRYPTO_MUTEX *lock; + CRYPTO_CONDVAR *cond_finished; +} OSSL_LIB_CTX_THREADS; + +# endif /* defined(OPENSSL_THREADS) */ + +#endif /* OPENSSL_INTERNAL_THREAD_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread_arch.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread_arch.h new file mode 100644 index 00000000..1bfc0ebb --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/thread_arch.h @@ -0,0 +1,127 @@ +/* + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_THREAD_ARCH_H +# define OSSL_INTERNAL_THREAD_ARCH_H +# include +# include +# include "internal/time.h" + +# if defined(_WIN32) +# include +# endif + +# if defined(OPENSSL_THREADS) && defined(OPENSSL_SYS_UNIX) +# define OPENSSL_THREADS_POSIX +# elif defined(OPENSSL_THREADS) && defined(OPENSSL_SYS_VMS) +# define OPENSSL_THREADS_POSIX +# elif defined(OPENSSL_THREADS) && defined(OPENSSL_SYS_WINDOWS) && \ + defined(_WIN32_WINNT) +# if _WIN32_WINNT >= 0x0600 +# define OPENSSL_THREADS_WINNT +# elif _WIN32_WINNT >= 0x0501 +# define OPENSSL_THREADS_WINNT +# define OPENSSL_THREADS_WINNT_LEGACY +# else +# define OPENSSL_THREADS_NONE +# endif +# else +# define OPENSSL_THREADS_NONE +# endif + +# include + +typedef void CRYPTO_MUTEX; +typedef void CRYPTO_CONDVAR; + +CRYPTO_MUTEX *ossl_crypto_mutex_new(void); +void ossl_crypto_mutex_lock(CRYPTO_MUTEX *mutex); +int ossl_crypto_mutex_try_lock(CRYPTO_MUTEX *mutex); +void ossl_crypto_mutex_unlock(CRYPTO_MUTEX *mutex); +void ossl_crypto_mutex_free(CRYPTO_MUTEX **mutex); + +CRYPTO_CONDVAR *ossl_crypto_condvar_new(void); +void ossl_crypto_condvar_wait(CRYPTO_CONDVAR *cv, CRYPTO_MUTEX *mutex); +void ossl_crypto_condvar_wait_timeout(CRYPTO_CONDVAR *cv, CRYPTO_MUTEX *mutex, + OSSL_TIME deadline); +void ossl_crypto_condvar_broadcast(CRYPTO_CONDVAR *cv); +void ossl_crypto_condvar_signal(CRYPTO_CONDVAR *cv); +void ossl_crypto_condvar_free(CRYPTO_CONDVAR **cv); + +typedef uint32_t CRYPTO_THREAD_RETVAL; +typedef CRYPTO_THREAD_RETVAL (*CRYPTO_THREAD_ROUTINE)(void *); +typedef CRYPTO_THREAD_RETVAL (*CRYPTO_THREAD_ROUTINE_CB)(void *, + void (**)(void *), + void **); + +# define CRYPTO_THREAD_NO_STATE 0UL +# define CRYPTO_THREAD_FINISHED (1UL << 0) +# define CRYPTO_THREAD_JOIN_AWAIT (1UL << 1) +# define CRYPTO_THREAD_JOINED (1UL << 2) + +# define CRYPTO_THREAD_GET_STATE(THREAD, FLAG) ((THREAD)->state & (FLAG)) +# define CRYPTO_THREAD_GET_ERROR(THREAD, FLAG) (((THREAD)->state >> 16) & (FLAG)) + +typedef struct crypto_thread_st { + uint32_t state; + void *data; + CRYPTO_THREAD_ROUTINE routine; + CRYPTO_THREAD_RETVAL retval; + void *handle; + CRYPTO_MUTEX *lock; + CRYPTO_MUTEX *statelock; + CRYPTO_CONDVAR *condvar; + unsigned long thread_id; + int joinable; + OSSL_LIB_CTX *ctx; +} CRYPTO_THREAD; + +# if defined(OPENSSL_THREADS) + +# define CRYPTO_THREAD_UNSET_STATE(THREAD, FLAG) \ + do { \ + (THREAD)->state &= ~(FLAG); \ + } while ((void)0, 0) + +# define CRYPTO_THREAD_SET_STATE(THREAD, FLAG) \ + do { \ + (THREAD)->state |= (FLAG); \ + } while ((void)0, 0) + +# define CRYPTO_THREAD_SET_ERROR(THREAD, FLAG) \ + do { \ + (THREAD)->state |= ((FLAG) << 16); \ + } while ((void)0, 0) + +# define CRYPTO_THREAD_UNSET_ERROR(THREAD, FLAG) \ + do { \ + (THREAD)->state &= ~((FLAG) << 16); \ + } while ((void)0, 0) + +# else + +# define CRYPTO_THREAD_UNSET_STATE(THREAD, FLAG) +# define CRYPTO_THREAD_SET_STATE(THREAD, FLAG) +# define CRYPTO_THREAD_SET_ERROR(THREAD, FLAG) +# define CRYPTO_THREAD_UNSET_ERROR(THREAD, FLAG) + +# endif /* defined(OPENSSL_THREADS) */ + +CRYPTO_THREAD * ossl_crypto_thread_native_start(CRYPTO_THREAD_ROUTINE routine, + void *data, int joinable); +int ossl_crypto_thread_native_spawn(CRYPTO_THREAD *thread); +int ossl_crypto_thread_native_join(CRYPTO_THREAD *thread, + CRYPTO_THREAD_RETVAL *retval); +int ossl_crypto_thread_native_perform_join(CRYPTO_THREAD *thread, + CRYPTO_THREAD_RETVAL *retval); +int ossl_crypto_thread_native_exit(void); +int ossl_crypto_thread_native_is_self(CRYPTO_THREAD *thread); +int ossl_crypto_thread_native_clean(CRYPTO_THREAD *thread); + +#endif /* OSSL_INTERNAL_THREAD_ARCH_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/time.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/time.h new file mode 100644 index 00000000..14d724ab --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/time.h @@ -0,0 +1,242 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_TIME_H +# define OSSL_INTERNAL_TIME_H +# pragma once + +# include /* uint64_t */ +# include "internal/e_os.h" /* for struct timeval */ +# include "internal/safe_math.h" + +/* + * Internal type defining a time. + * This should be treated as an opaque structure. + * + * The time datum is Unix's 1970 and at nanosecond precision, this gives + * a range of 584 years roughly. + */ +typedef struct { + uint64_t t; /* Ticks since the epoch */ +} OSSL_TIME; + +/* The precision of times allows this many values per second */ +# define OSSL_TIME_SECOND ((uint64_t)1000000000) + +/* One millisecond. */ +# define OSSL_TIME_MS (OSSL_TIME_SECOND / 1000) + +/* One microsecond. */ +# define OSSL_TIME_US (OSSL_TIME_MS / 1000) + +/* One nanosecond. */ +# define OSSL_TIME_NS (OSSL_TIME_US / 1000) + +#define ossl_seconds2time(s) ossl_ticks2time((s) * OSSL_TIME_SECOND) +#define ossl_time2seconds(t) (ossl_time2ticks(t) / OSSL_TIME_SECOND) +#define ossl_ms2time(ms) ossl_ticks2time((ms) * OSSL_TIME_MS) +#define ossl_time2ms(t) (ossl_time2ticks(t) / OSSL_TIME_MS) +#define ossl_us2time(us) ossl_ticks2time((us) * OSSL_TIME_US) +#define ossl_time2us(t) (ossl_time2ticks(t) / OSSL_TIME_US) + +/* + * Arithmetic operations on times. + * These operations are saturating, in that an overflow or underflow returns + * the largest or smallest value respectively. + */ +OSSL_SAFE_MATH_UNSIGNED(time, uint64_t) + +/* Convert a tick count into a time */ +static ossl_unused ossl_inline +OSSL_TIME ossl_ticks2time(uint64_t ticks) +{ + OSSL_TIME r; + + r.t = ticks; + return r; +} + +/* Convert a time to a tick count */ +static ossl_unused ossl_inline +uint64_t ossl_time2ticks(OSSL_TIME t) +{ + return t.t; +} + +/* Get current time */ +OSSL_TIME ossl_time_now(void); + +/* The beginning and end of the time range */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_zero(void) +{ + return ossl_ticks2time(0); +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_infinite(void) +{ + return ossl_ticks2time(~(uint64_t)0); +} + + +/* Convert time to timeval */ +static ossl_unused ossl_inline +struct timeval ossl_time_to_timeval(OSSL_TIME t) +{ + struct timeval tv; + int err = 0; + + /* + * Round up any nano secs which struct timeval doesn't support. Ensures that + * we never return a zero time if the input time is non zero + */ + t.t = safe_add_time(t.t, OSSL_TIME_US - 1, &err); + if (err) + t = ossl_time_infinite(); + +#ifdef _WIN32 + tv.tv_sec = (long int)(t.t / OSSL_TIME_SECOND); +#else + tv.tv_sec = (time_t)(t.t / OSSL_TIME_SECOND); +#endif + tv.tv_usec = (t.t % OSSL_TIME_SECOND) / OSSL_TIME_US; + return tv; +} + +/* Convert timeval to time */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_from_timeval(struct timeval tv) +{ + OSSL_TIME t; + +#ifndef __DJGPP__ /* tv_sec is unsigned on djgpp. */ + if (tv.tv_sec < 0) + return ossl_time_zero(); +#endif + t.t = tv.tv_sec * OSSL_TIME_SECOND + tv.tv_usec * OSSL_TIME_US; + return t; +} + +/* Convert OSSL_TIME to time_t */ +static ossl_unused ossl_inline +time_t ossl_time_to_time_t(OSSL_TIME t) +{ + return (time_t)(t.t / OSSL_TIME_SECOND); +} + +/* Convert time_t to OSSL_TIME */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_from_time_t(time_t t) +{ + OSSL_TIME ot; + + ot.t = t; + ot.t *= OSSL_TIME_SECOND; + return ot; +} + +/* Compare two time values, return -1 if less, 1 if greater and 0 if equal */ +static ossl_unused ossl_inline +int ossl_time_compare(OSSL_TIME a, OSSL_TIME b) +{ + if (a.t > b.t) + return 1; + if (a.t < b.t) + return -1; + return 0; +} + +/* Returns true if an OSSL_TIME is ossl_time_zero(). */ +static ossl_unused ossl_inline +int ossl_time_is_zero(OSSL_TIME t) +{ + return ossl_time_compare(t, ossl_time_zero()) == 0; +} + +/* Returns true if an OSSL_TIME is ossl_time_infinite(). */ +static ossl_unused ossl_inline +int ossl_time_is_infinite(OSSL_TIME t) +{ + return ossl_time_compare(t, ossl_time_infinite()) == 0; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_add(OSSL_TIME a, OSSL_TIME b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_add_time(a.t, b.t, &err); + return err ? ossl_time_infinite() : r; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_subtract(OSSL_TIME a, OSSL_TIME b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_sub_time(a.t, b.t, &err); + return err ? ossl_time_zero() : r; +} + +/* Returns |a - b|. */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_abs_difference(OSSL_TIME a, OSSL_TIME b) +{ + return a.t > b.t ? ossl_time_subtract(a, b) + : ossl_time_subtract(b, a); +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_multiply(OSSL_TIME a, uint64_t b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_mul_time(a.t, b, &err); + return err ? ossl_time_infinite() : r; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_divide(OSSL_TIME a, uint64_t b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_div_time(a.t, b, &err); + return err ? ossl_time_zero() : r; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_muldiv(OSSL_TIME a, uint64_t b, uint64_t c) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_muldiv_time(a.t, b, c, &err); + return err ? ossl_time_zero() : r; +} + +/* Return higher of the two given time values. */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_max(OSSL_TIME a, OSSL_TIME b) +{ + return a.t > b.t ? a : b; +} + +/* Return the lower of the two given time values. */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_min(OSSL_TIME a, OSSL_TIME b) +{ + return a.t < b.t ? a : b; +} + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tlsgroups.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tlsgroups.h index 8a35ced1..73fb53bc 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tlsgroups.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tlsgroups.h @@ -41,6 +41,16 @@ # define OSSL_TLS_GROUP_ID_brainpoolP512r1 0x001C # define OSSL_TLS_GROUP_ID_x25519 0x001D # define OSSL_TLS_GROUP_ID_x448 0x001E +# define OSSL_TLS_GROUP_ID_brainpoolP256r1_tls13 0x001F +# define OSSL_TLS_GROUP_ID_brainpoolP384r1_tls13 0x0020 +# define OSSL_TLS_GROUP_ID_brainpoolP512r1_tls13 0x0021 +# define OSSL_TLS_GROUP_ID_gc256A 0x0022 +# define OSSL_TLS_GROUP_ID_gc256B 0x0023 +# define OSSL_TLS_GROUP_ID_gc256C 0x0024 +# define OSSL_TLS_GROUP_ID_gc256D 0x0025 +# define OSSL_TLS_GROUP_ID_gc512A 0x0026 +# define OSSL_TLS_GROUP_ID_gc512B 0x0027 +# define OSSL_TLS_GROUP_ID_gc512C 0x0028 # define OSSL_TLS_GROUP_ID_ffdhe2048 0x0100 # define OSSL_TLS_GROUP_ID_ffdhe3072 0x0101 # define OSSL_TLS_GROUP_ID_ffdhe4096 0x0102 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tsan_assist.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tsan_assist.h index 17205d10..a840df0b 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tsan_assist.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/tsan_assist.h @@ -47,33 +47,37 @@ * can use TSAN_QUALIFIER in cast specifically when it has to count. */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ +#ifndef OSSL_INTERNAL_TSAN_ASSIST_H +# define OSSL_INTERNAL_TSAN_ASSIST_H +# pragma once + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ && !defined(__STDC_NO_ATOMICS__) -# include +# include -# if defined(ATOMIC_POINTER_LOCK_FREE) \ +# if defined(ATOMIC_POINTER_LOCK_FREE) \ && ATOMIC_POINTER_LOCK_FREE >= 2 -# define TSAN_QUALIFIER _Atomic -# define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed) -# define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed) -# define tsan_add(ptr, n) atomic_fetch_add_explicit((ptr), (n), memory_order_relaxed) -# define tsan_ld_acq(ptr) atomic_load_explicit((ptr), memory_order_acquire) -# define tsan_st_rel(ptr, val) atomic_store_explicit((ptr), (val), memory_order_release) -# endif +# define TSAN_QUALIFIER _Atomic +# define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed) +# define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed) +# define tsan_add(ptr, n) atomic_fetch_add_explicit((ptr), (n), memory_order_relaxed) +# define tsan_ld_acq(ptr) atomic_load_explicit((ptr), memory_order_acquire) +# define tsan_st_rel(ptr, val) atomic_store_explicit((ptr), (val), memory_order_release) +# endif -#elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) +# elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) -# if defined(__GCC_ATOMIC_POINTER_LOCK_FREE) \ +# if defined(__GCC_ATOMIC_POINTER_LOCK_FREE) \ && __GCC_ATOMIC_POINTER_LOCK_FREE >= 2 -# define TSAN_QUALIFIER volatile -# define tsan_load(ptr) __atomic_load_n((ptr), __ATOMIC_RELAXED) -# define tsan_store(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELAXED) -# define tsan_add(ptr, n) __atomic_fetch_add((ptr), (n), __ATOMIC_RELAXED) -# define tsan_ld_acq(ptr) __atomic_load_n((ptr), __ATOMIC_ACQUIRE) -# define tsan_st_rel(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELEASE) -# endif +# define TSAN_QUALIFIER volatile +# define tsan_load(ptr) __atomic_load_n((ptr), __ATOMIC_RELAXED) +# define tsan_store(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELAXED) +# define tsan_add(ptr, n) __atomic_fetch_add((ptr), (n), __ATOMIC_RELAXED) +# define tsan_ld_acq(ptr) __atomic_load_n((ptr), __ATOMIC_ACQUIRE) +# define tsan_st_rel(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELEASE) +# endif -#elif defined(_MSC_VER) && _MSC_VER>=1200 \ +# elif defined(_MSC_VER) && _MSC_VER>=1200 \ && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \ defined(_M_ARM64) || (defined(_M_ARM) && _M_ARM >= 7 && !defined(_WIN32_WCE))) /* @@ -87,62 +91,63 @@ * with additional instructions and penalties, it kind of makes sense to * default to "iso"... */ -# define TSAN_QUALIFIER volatile -# if defined(_M_ARM) || defined(_M_ARM64) -# define _InterlockedExchangeAdd _InterlockedExchangeAdd_nf -# pragma intrinsic(_InterlockedExchangeAdd_nf) -# pragma intrinsic(__iso_volatile_load32, __iso_volatile_store32) -# ifdef _WIN64 -# define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_nf -# pragma intrinsic(_InterlockedExchangeAdd64_nf) -# pragma intrinsic(__iso_volatile_load64, __iso_volatile_store64) -# define tsan_load(ptr) (sizeof(*(ptr)) == 8 ? __iso_volatile_load64(ptr) \ +# define TSAN_QUALIFIER volatile +# if defined(_M_ARM) || defined(_M_ARM64) +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_nf +# pragma intrinsic(_InterlockedExchangeAdd_nf) +# pragma intrinsic(__iso_volatile_load32, __iso_volatile_store32) +# ifdef _WIN64 +# define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_nf +# pragma intrinsic(_InterlockedExchangeAdd64_nf) +# pragma intrinsic(__iso_volatile_load64, __iso_volatile_store64) +# define tsan_load(ptr) (sizeof(*(ptr)) == 8 ? __iso_volatile_load64(ptr) \ : __iso_volatile_load32(ptr)) -# define tsan_store(ptr, val) (sizeof(*(ptr)) == 8 ? __iso_volatile_store64((ptr), (val)) \ +# define tsan_store(ptr, val) (sizeof(*(ptr)) == 8 ? __iso_volatile_store64((ptr), (val)) \ : __iso_volatile_store32((ptr), (val))) +# else +# define tsan_load(ptr) __iso_volatile_load32(ptr) +# define tsan_store(ptr, val) __iso_volatile_store32((ptr), (val)) +# endif # else -# define tsan_load(ptr) __iso_volatile_load32(ptr) -# define tsan_store(ptr, val) __iso_volatile_store32((ptr), (val)) +# define tsan_load(ptr) (*(ptr)) +# define tsan_store(ptr, val) (*(ptr) = (val)) # endif -# else +# pragma intrinsic(_InterlockedExchangeAdd) +# ifdef _WIN64 +# pragma intrinsic(_InterlockedExchangeAdd64) +# define tsan_add(ptr, n) (sizeof(*(ptr)) == 8 ? _InterlockedExchangeAdd64((ptr), (n)) \ + : _InterlockedExchangeAdd((ptr), (n))) +# else +# define tsan_add(ptr, n) _InterlockedExchangeAdd((ptr), (n)) +# endif +# if !defined(_ISO_VOLATILE) +# define tsan_ld_acq(ptr) (*(ptr)) +# define tsan_st_rel(ptr, val) (*(ptr) = (val)) +# endif + +# endif + +# ifndef TSAN_QUALIFIER + +# ifdef OPENSSL_THREADS +# define TSAN_QUALIFIER volatile +# define TSAN_REQUIRES_LOCKING +# else /* OPENSSL_THREADS */ +# define TSAN_QUALIFIER +# endif /* OPENSSL_THREADS */ + # define tsan_load(ptr) (*(ptr)) # define tsan_store(ptr, val) (*(ptr) = (val)) -# endif -# pragma intrinsic(_InterlockedExchangeAdd) -# ifdef _WIN64 -# pragma intrinsic(_InterlockedExchangeAdd64) -# define tsan_add(ptr, n) (sizeof(*(ptr)) == 8 ? _InterlockedExchangeAdd64((ptr), (n)) \ - : _InterlockedExchangeAdd((ptr), (n))) -# else -# define tsan_add(ptr, n) _InterlockedExchangeAdd((ptr), (n)) -# endif -# if !defined(_ISO_VOLATILE) -# define tsan_ld_acq(ptr) (*(ptr)) -# define tsan_st_rel(ptr, val) (*(ptr) = (val)) -# endif - -#endif - -#ifndef TSAN_QUALIFIER - -# ifdef OPENSSL_THREADS -# define TSAN_QUALIFIER volatile -# define TSAN_REQUIRES_LOCKING -# else /* OPENSSL_THREADS */ -# define TSAN_QUALIFIER -# endif /* OPENSSL_THREADS */ - -# define tsan_load(ptr) (*(ptr)) -# define tsan_store(ptr, val) (*(ptr) = (val)) -# define tsan_add(ptr, n) (*(ptr) += (n)) +# define tsan_add(ptr, n) (*(ptr) += (n)) /* * Lack of tsan_ld_acq and tsan_ld_rel means that compiler support is not * sophisticated enough to support them. Code that relies on them should be * protected with #ifdef tsan_ld_acq with locked fallback. */ +# endif + +# define tsan_counter(ptr) tsan_add((ptr), 1) +# define tsan_decr(ptr) tsan_add((ptr), -1) + #endif - -#define tsan_counter(ptr) tsan_add((ptr), 1) -#define tsan_decr(ptr) tsan_add((ptr), -1) - diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/uint_set.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/uint_set.h new file mode 100644 index 00000000..dcb29b33 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/internal/uint_set.h @@ -0,0 +1,63 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_UINT_SET_H +# define OSSL_UINT_SET_H + +#include "openssl/params.h" +#include "internal/list.h" + +/* + * uint64_t Integer Sets + * ===================== + * + * Utilities for managing a logical set of unsigned 64-bit integers. The + * structure tracks each contiguous range of integers using one allocation and + * is thus optimised for cases where integers tend to appear consecutively. + * Queries are optimised under the assumption that they will generally be made + * on integers near the end of the set. + * + * Discussion of implementation details can be found in uint_set.c. + */ +typedef struct uint_range_st { + uint64_t start, end; +} UINT_RANGE; + +typedef struct uint_set_item_st UINT_SET_ITEM; +struct uint_set_item_st { + OSSL_LIST_MEMBER(uint_set, UINT_SET_ITEM); + UINT_RANGE range; +}; + +DEFINE_LIST_OF(uint_set, UINT_SET_ITEM); + +typedef OSSL_LIST(uint_set) UINT_SET; + +void ossl_uint_set_init(UINT_SET *s); +void ossl_uint_set_destroy(UINT_SET *s); + +/* + * Insert a range into a integer set. Returns 0 on allocation failure, in which + * case the integer set is in a valid but undefined state. Otherwise, returns 1. + * Ranges can overlap existing ranges without limitation. If a range is a subset + * of an existing range in the set, this is a no-op and returns 1. + */ +int ossl_uint_set_insert(UINT_SET *s, const UINT_RANGE *range); + +/* + * Remove a range from the set. Returns 0 on allocation failure, in which case + * the integer set is unchanged. Otherwise, returns 1. Ranges which are not + * already in the set can be removed without issue. If a passed range is not in + * the integer set at all, this is a no-op and returns 1. + */ +int ossl_uint_set_remove(UINT_SET *s, const UINT_RANGE *range); + +/* Returns 1 iff the given integer is in the integer set. */ +int ossl_uint_set_query(const UINT_SET *s, uint64_t v); + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h index 85ae8d58..09712345 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -158,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -999,6 +999,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h.in index d478bc96..798b2211 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/asn1.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -135,7 +135,7 @@ extern "C" { -} -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -832,6 +832,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/async.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/async.h index bc27d5db..826ffb99 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/async.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/async.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -80,6 +80,14 @@ int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); int ASYNC_is_capable(void); +typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); +typedef void (*ASYNC_stack_free_fn)(void *addr); + +int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, + ASYNC_stack_free_fn free_fn); +void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, + ASYNC_stack_free_fn *free_fn); + int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, int (*func)(void *), void *args, size_t size); int ASYNC_pause_job(void); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h index e16cf622..ea584def 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,6 +67,8 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) #define BIO_TYPE_START 128 @@ -171,6 +173,30 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +234,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +282,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +390,34 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +484,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +515,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +536,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +664,30 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +730,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +765,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +787,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +806,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +829,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +893,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +911,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -856,18 +967,30 @@ int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, - int (*gets) (BIO *, char *, int)); + int (*ossl_gets) (BIO *, char *, int)); long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h.in index c521e41e..418d1197 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bio.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -68,6 +68,8 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) #define BIO_TYPE_START 128 @@ -172,6 +174,30 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -209,7 +235,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -257,12 +283,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -339,6 +367,34 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -405,10 +461,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -429,7 +492,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -446,6 +513,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -573,8 +641,30 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -617,10 +707,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -644,6 +742,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -663,6 +764,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -681,6 +783,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -703,6 +806,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -765,6 +870,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -782,6 +888,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -833,18 +944,30 @@ int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, - int (*gets) (BIO *, char *, int)); + int (*ossl_gets) (BIO *, char *, int)); long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bioerr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bioerr.h index 787b30af..e4fdb649 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bioerr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bioerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -37,14 +37,18 @@ # define BIO_R_IN_USE 123 # define BIO_R_LENGTH_TOO_LONG 102 # define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOCAL_ADDR_NOT_AVAILABLE 111 # define BIO_R_LOOKUP_RETURNED_NOTHING 142 # define BIO_R_MALFORMED_HOST_OR_SERVICE 130 # define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NON_FATAL 112 # define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 # define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 # define BIO_R_NO_PORT_DEFINED 113 # define BIO_R_NO_SUCH_FILE 128 # define BIO_R_NULL_PARAMETER 115 /* unused */ +# define BIO_R_TFO_DISABLED 106 +# define BIO_R_TFO_NO_KERNEL_SUPPORT 108 # define BIO_R_TRANSFER_ERROR 104 # define BIO_R_TRANSFER_TIMEOUT 105 # define BIO_R_UNABLE_TO_BIND_SOCKET 117 @@ -53,6 +57,7 @@ # define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 # define BIO_R_UNABLE_TO_NODELAY 138 # define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNABLE_TO_TFO 109 # define BIO_R_UNAVAILABLE_IP_FAMILY 145 # define BIO_R_UNINITIALIZED 120 # define BIO_R_UNKNOWN_INFO_TYPE 140 @@ -61,5 +66,7 @@ # define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 # define BIO_R_WRITE_TO_READ_ONLY_BIO 126 # define BIO_R_WSASTARTUP 122 +# define BIO_R_PORT_MISMATCH 150 +# define BIO_R_PEER_ADDR_NOT_AVAILABLE 151 #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bn.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bn.h index 27b127a5..ea706dca 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bn.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/bn.h @@ -241,12 +241,18 @@ void BN_clear_free(BIGNUM *a); BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); void BN_swap(BIGNUM *a, BIGNUM *b); BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_bin2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2bin(const BIGNUM *a, unsigned char *to); int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2native(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2mpi(const BIGNUM *a, unsigned char *to); int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h index 49825570..60beffd5 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -378,18 +379,35 @@ ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -420,9 +438,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +452,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -454,6 +476,7 @@ int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +500,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -517,8 +541,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -590,6 +616,12 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h.in index fb5ae671..5bd8beb5 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmp.h.in @@ -36,7 +36,9 @@ use OpenSSL::stackhash qw(generate_stack_macros); extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -138,7 +140,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -204,8 +205,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -259,18 +260,35 @@ ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -301,9 +319,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -313,7 +333,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -335,6 +357,7 @@ int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -358,6 +381,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -398,8 +422,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -471,6 +497,12 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmperr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmperr.h index 49fd5e39..57a6effb 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmperr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmperr.h @@ -59,8 +59,11 @@ # define CMP_R_FAILED_EXTRACTING_PUBKEY 141 # define CMP_R_FAILURE_OBTAINING_RANDOM 110 # define CMP_R_FAIL_INFO_OUT_OF_RANGE 129 +# define CMP_R_GETTING_GENP 192 # define CMP_R_INVALID_ARGS 100 +# define CMP_R_INVALID_GENP 193 # define CMP_R_INVALID_OPTION 174 +# define CMP_R_INVALID_ROOTCAKEYUPDATE 195 # define CMP_R_MISSING_CERTID 165 # define CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION 130 # define CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE 142 @@ -94,6 +97,7 @@ # define CMP_R_TOTAL_TIMEOUT 184 # define CMP_R_TRANSACTIONID_UNMATCHED 152 # define CMP_R_TRANSFER_ERROR 159 +# define CMP_R_UNCLEAN_CTX 191 # define CMP_R_UNEXPECTED_PKIBODY 133 # define CMP_R_UNEXPECTED_PKISTATUS 185 # define CMP_R_UNEXPECTED_PVNO 153 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h index 3b453e6a..fe86a5c7 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,6 +149,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) @@ -217,13 +221,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +240,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +278,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +297,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +395,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +456,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h.in index da20ddf2..23966770 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cms.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -32,8 +32,10 @@ use OpenSSL::stackhash qw(generate_stack_macros); extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -49,6 +51,8 @@ typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; .generate_stack_macros("CMS_RevocationInfoChoice"); -} +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) @@ -119,13 +123,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -135,27 +142,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -174,7 +180,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -193,12 +199,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -287,6 +297,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -343,7 +358,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmserr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmserr.h index f2d7708f..887035b1 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmserr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/cmserr.h @@ -86,6 +86,7 @@ # define CMS_R_NO_PUBLIC_KEY 134 # define CMS_R_NO_RECEIPT_REQUEST 168 # define CMS_R_NO_SIGNERS 135 +# define CMS_R_OPERATION_UNSUPPORTED 182 # define CMS_R_PEER_KEY_ERROR 188 # define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 # define CMS_R_RECEIPT_DECODE_ERROR 169 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comp.h index 06ff5810..f81ba0f3 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comp.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comp.h @@ -40,15 +40,20 @@ int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, unsigned char *in, int ilen); COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); #ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define COMP_zlib_cleanup() while(0) continue #endif # ifdef OPENSSL_BIO_H -# ifdef ZLIB const BIO_METHOD *BIO_f_zlib(void); -# endif +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comperr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comperr.h index 01dd3e6b..1948d37f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comperr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/comperr.h @@ -23,9 +23,16 @@ /* * COMP reason codes. */ +# define COMP_R_BROTLI_DECODE_ERROR 102 +# define COMP_R_BROTLI_ENCODE_ERROR 103 +# define COMP_R_BROTLI_NOT_SUPPORTED 104 # define COMP_R_ZLIB_DEFLATE_ERROR 99 # define COMP_R_ZLIB_INFLATE_ERROR 100 # define COMP_R_ZLIB_NOT_SUPPORTED 101 +# define COMP_R_ZSTD_COMPRESS_ERROR 105 +# define COMP_R_ZSTD_DECODE_ERROR 106 +# define COMP_R_ZSTD_DECOMPRESS_ERROR 107 +# define COMP_R_ZSTD_NOT_SUPPORTED 108 # endif #endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h index e8fcf315..61bb0087 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/conf.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h.in index 044b3eb5..56632870 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/conf.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h index 650b8e49..712dcded 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_iOS # define OPENSSL_SYS_iOS 1 # endif -# define OPENSSL_CONFIGURED_API 30100 +# define OPENSSL_CONFIGURED_API 30200 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -46,12 +46,21 @@ extern "C" { # ifndef OPENSSL_NO_ASYNC # define OPENSSL_NO_ASYNC # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_CRYPTO_MDEBUG # define OPENSSL_NO_CRYPTO_MDEBUG # endif # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEFAULT_THREAD_POOL +# define OPENSSL_NO_DEFAULT_THREAD_POOL +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -100,6 +109,12 @@ extern "C" { # ifndef OPENSSL_NO_TESTS # define OPENSSL_NO_TESTS # endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_THREAD_POOL +# define OPENSSL_NO_THREAD_POOL +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -115,6 +130,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -136,6 +166,12 @@ extern "C" { # define RC4_INT unsigned char +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h.in index b84dc1df..86077d0a 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/configuration.h.in @@ -62,6 +62,12 @@ extern "C" { # define RC4_INT {- $config{rc4_int} -} +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core.h index 9683ac70..18c19918 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -42,6 +42,9 @@ struct ossl_dispatch_st { void (*function)(void); }; +# define OSSL_DISPATCH_END \ + { 0, NULL } + /* * Other items, essentially an int<->pointer map element. * diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_dispatch.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_dispatch.h index 61d75a38..9b03f20c 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_dispatch.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_dispatch.h @@ -661,6 +661,14 @@ OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types, OSSL_CORE_MAKE_FUNC(void *, keymgmt_dup, (const void *keydata_from, int selection)) +/* Extended import and export functions */ +# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45 +# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex, + (void *provctx, int selection)) + /* Key Exchange */ # define OSSL_FUNC_KEYEXCH_NEWCTX 1 @@ -832,16 +840,24 @@ OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_settable_ctx_params, # define OSSL_FUNC_KEM_GETTABLE_CTX_PARAMS 9 # define OSSL_FUNC_KEM_SET_CTX_PARAMS 10 # define OSSL_FUNC_KEM_SETTABLE_CTX_PARAMS 11 +# define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12 +# define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13 OSSL_CORE_MAKE_FUNC(void *, kem_newctx, (void *provctx)) OSSL_CORE_MAKE_FUNC(int, kem_encapsulate_init, (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kem_auth_encapsulate_init, (void *ctx, void *provkey, + void *authprivkey, + const OSSL_PARAM params[])) OSSL_CORE_MAKE_FUNC(int, kem_encapsulate, (void *ctx, unsigned char *out, size_t *outlen, unsigned char *secret, size_t *secretlen)) OSSL_CORE_MAKE_FUNC(int, kem_decapsulate_init, (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kem_auth_decapsulate_init, (void *ctx, void *provkey, + void *authpubkey, + const OSSL_PARAM params[])) OSSL_CORE_MAKE_FUNC(int, kem_decapsulate, (void *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen)) @@ -937,6 +953,8 @@ OSSL_CORE_MAKE_FUNC(int, decoder_export_object, #define OSSL_FUNC_STORE_EOF 6 #define OSSL_FUNC_STORE_CLOSE 7 #define OSSL_FUNC_STORE_EXPORT_OBJECT 8 +#define OSSL_FUNC_STORE_DELETE 9 +#define OSSL_FUNC_STORE_OPEN_EX 10 OSSL_CORE_MAKE_FUNC(void *, store_open, (void *provctx, const char *uri)) OSSL_CORE_MAKE_FUNC(void *, store_attach, (void *provctx, OSSL_CORE_BIO *in)) OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, store_settable_ctx_params, @@ -952,6 +970,12 @@ OSSL_CORE_MAKE_FUNC(int, store_close, (void *loaderctx)) OSSL_CORE_MAKE_FUNC(int, store_export_object, (void *loaderctx, const void *objref, size_t objref_sz, OSSL_CALLBACK *export_cb, void *export_cbarg)) +OSSL_CORE_MAKE_FUNC(int, store_delete, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(void *, store_open_ex, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) # ifdef __cplusplus } diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h index 0a6ec1bb..ffffe90f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h @@ -1,4 +1,7 @@ /* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -7,6 +10,7 @@ * https://www.openssl.org/source/license.html */ + #ifndef OPENSSL_CORE_NAMES_H # define OPENSSL_CORE_NAMES_H # pragma once @@ -15,544 +19,454 @@ extern "C" { # endif -/* Well known parameter names that core passes to providers */ -#define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" /* utf8_ptr */ -#define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" /* utf8_ptr */ -#define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" /* utf8_ptr */ - -/* Well known parameter names that Providers can define */ -#define OSSL_PROV_PARAM_NAME "name" /* utf8_ptr */ -#define OSSL_PROV_PARAM_VERSION "version" /* utf8_ptr */ -#define OSSL_PROV_PARAM_BUILDINFO "buildinfo" /* utf8_ptr */ -#define OSSL_PROV_PARAM_STATUS "status" /* uint */ -#define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" /* uint */ -#define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" /* uint */ -#define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" /* uint */ - -/* Self test callback parameters */ -#define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" /* utf8_string */ -#define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" /* utf8_string */ -#define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" /* utf8_string */ - -/*- - * Provider-native object abstractions - * - * These are used when a provider wants to pass object data or an object - * reference back to libcrypto. This is only useful for provider functions - * that take a callback to which an OSSL_PARAM array with these parameters - * can be passed. - * - * This set of parameter names is explained in detail in provider-object(7) - * (doc/man7/provider-object.pod) - */ -#define OSSL_OBJECT_PARAM_TYPE "type" /* INTEGER */ -#define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" /* UTF8_STRING */ -#define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" /* UTF8_STRING */ -#define OSSL_OBJECT_PARAM_REFERENCE "reference" /* OCTET_STRING */ -#define OSSL_OBJECT_PARAM_DATA "data" /* OCTET_STRING or UTF8_STRING */ -#define OSSL_OBJECT_PARAM_DESC "desc" /* UTF8_STRING */ - -/* - * Algorithm parameters - * If "engine" or "properties" are specified, they should always be paired - * with the algorithm type. - * Note these are common names that are shared by many types (such as kdf, mac, - * and pkey) e.g: see OSSL_MAC_PARAM_DIGEST below. - */ -#define OSSL_ALG_PARAM_DIGEST "digest" /* utf8_string */ -#define OSSL_ALG_PARAM_CIPHER "cipher" /* utf8_string */ -#define OSSL_ALG_PARAM_ENGINE "engine" /* utf8_string */ -#define OSSL_ALG_PARAM_MAC "mac" /* utf8_string */ -#define OSSL_ALG_PARAM_PROPERTIES "properties"/* utf8_string */ - -/* cipher parameters */ -#define OSSL_CIPHER_PARAM_PADDING "padding" /* uint */ -#define OSSL_CIPHER_PARAM_USE_BITS "use-bits" /* uint */ -#define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" /* uint */ -#define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" /* octet_ptr */ -#define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" /* size_t */ -#define OSSL_CIPHER_PARAM_MODE "mode" /* uint */ -#define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" /* size_t */ -#define OSSL_CIPHER_PARAM_AEAD "aead" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_CTS "cts" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_KEYLEN "keylen" /* size_t */ -#define OSSL_CIPHER_PARAM_IVLEN "ivlen" /* size_t */ -#define OSSL_CIPHER_PARAM_IV "iv" /* octet_string OR octet_ptr */ -#define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" /* octet_string OR octet_ptr */ -#define OSSL_CIPHER_PARAM_NUM "num" /* uint */ -#define OSSL_CIPHER_PARAM_ROUNDS "rounds" /* uint */ -#define OSSL_CIPHER_PARAM_AEAD_TAG "tag" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" /* size_t */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN -#define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" /* size_t */ -#define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" /* octet_string */ -#define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" /* octet_string */ -#define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" /* size_t */ -#define OSSL_CIPHER_PARAM_SPEED "speed" /* uint */ -#define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" /* utf8_string */ -/* For passing the AlgorithmIdentifier parameter in DER form */ -#define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param" /* octet_string */ - -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT \ - "tls1multi_maxsndfrag" /* uint */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE \ - "tls1multi_maxbufsz" /* size_t */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE \ - "tls1multi_interleave" /* uint */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD \ - "tls1multi_aad" /* octet_string */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN \ - "tls1multi_aadpacklen" /* uint */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC \ - "tls1multi_enc" /* octet_string */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN \ - "tls1multi_encin" /* octet_string */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN \ - "tls1multi_enclen" /* size_t */ - /* OSSL_CIPHER_PARAM_CTS_MODE Values */ -#define OSSL_CIPHER_CTS_MODE_CS1 "CS1" -#define OSSL_CIPHER_CTS_MODE_CS2 "CS2" -#define OSSL_CIPHER_CTS_MODE_CS3 "CS3" +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" -/* digest parameters */ -#define OSSL_DIGEST_PARAM_XOFLEN "xoflen" /* size_t */ -#define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" /* octet string */ -#define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" /* uint */ -#define OSSL_DIGEST_PARAM_MICALG "micalg" /* utf8 string */ -#define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" /* size_t */ -#define OSSL_DIGEST_PARAM_SIZE "size" /* size_t */ -#define OSSL_DIGEST_PARAM_XOF "xof" /* int, 0 or 1 */ -#define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" /* int, 0 or 1 */ +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" /* Known DIGEST names (not a complete list) */ -#define OSSL_DIGEST_NAME_MD5 "MD5" -#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" -#define OSSL_DIGEST_NAME_SHA1 "SHA1" -#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" -#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" -#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" -#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" -#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" -#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" -#define OSSL_DIGEST_NAME_MD2 "MD2" -#define OSSL_DIGEST_NAME_MD4 "MD4" -#define OSSL_DIGEST_NAME_MDC2 "MDC2" -#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" -#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" -#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" -#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" -#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" -#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" -#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" -#define OSSL_DIGEST_NAME_SM3 "SM3" - -/* MAC parameters */ -#define OSSL_MAC_PARAM_KEY "key" /* octet string */ -#define OSSL_MAC_PARAM_IV "iv" /* octet string */ -#define OSSL_MAC_PARAM_CUSTOM "custom" /* utf8 string */ -#define OSSL_MAC_PARAM_SALT "salt" /* octet string */ -#define OSSL_MAC_PARAM_XOF "xof" /* int, 0 or 1 */ -#define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" /* int, 0 or 1 */ -#define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" /* int, 0 or 1 */ -#define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" /* unsigned int */ -#define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" /* unsigned int */ - -/* - * If "engine" or "properties" are specified, they should always be paired - * with "cipher" or "digest". - */ -#define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ -#define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */ -#define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */ -#define OSSL_MAC_PARAM_SIZE "size" /* size_t */ -#define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" /* size_t */ -#define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" /* size_t */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" /* Known MAC names */ -#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" -#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" -#define OSSL_MAC_NAME_CMAC "CMAC" -#define OSSL_MAC_NAME_GMAC "GMAC" -#define OSSL_MAC_NAME_HMAC "HMAC" -#define OSSL_MAC_NAME_KMAC128 "KMAC128" -#define OSSL_MAC_NAME_KMAC256 "KMAC256" -#define OSSL_MAC_NAME_POLY1305 "POLY1305" -#define OSSL_MAC_NAME_SIPHASH "SIPHASH" - -/* KDF / PRF parameters */ -#define OSSL_KDF_PARAM_SECRET "secret" /* octet string */ -#define OSSL_KDF_PARAM_KEY "key" /* octet string */ -#define OSSL_KDF_PARAM_SALT "salt" /* octet string */ -#define OSSL_KDF_PARAM_PASSWORD "pass" /* octet string */ -#define OSSL_KDF_PARAM_PREFIX "prefix" /* octet string */ -#define OSSL_KDF_PARAM_LABEL "label" /* octet string */ -#define OSSL_KDF_PARAM_DATA "data" /* octet string */ -#define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */ -#define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ -#define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC /* utf8 string */ -#define OSSL_KDF_PARAM_MAC_SIZE "maclen" /* size_t */ -#define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */ -#define OSSL_KDF_PARAM_ITER "iter" /* unsigned int */ -#define OSSL_KDF_PARAM_MODE "mode" /* utf8 string or int */ -#define OSSL_KDF_PARAM_PKCS5 "pkcs5" /* int */ -#define OSSL_KDF_PARAM_UKM "ukm" /* octet string */ -#define OSSL_KDF_PARAM_CEK_ALG "cekalg" /* utf8 string */ -#define OSSL_KDF_PARAM_SCRYPT_N "n" /* uint64_t */ -#define OSSL_KDF_PARAM_SCRYPT_R "r" /* uint32_t */ -#define OSSL_KDF_PARAM_SCRYPT_P "p" /* uint32_t */ -#define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" /* uint64_t */ -#define OSSL_KDF_PARAM_INFO "info" /* octet string */ -#define OSSL_KDF_PARAM_SEED "seed" /* octet string */ -#define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" /* octet string */ -#define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" /* octet string */ -#define OSSL_KDF_PARAM_SSHKDF_TYPE "type" /* int */ -#define OSSL_KDF_PARAM_SIZE "size" /* size_t */ -#define OSSL_KDF_PARAM_CONSTANT "constant" /* octet string */ -#define OSSL_KDF_PARAM_PKCS12_ID "id" /* int */ -#define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" /* int */ -#define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" /* int */ -#define OSSL_KDF_PARAM_KBKDF_R "r" /* int */ -#define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" -#define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" -#define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" -#define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" -#define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" -#define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" /* Known KDF names */ -#define OSSL_KDF_NAME_HKDF "HKDF" -#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" -#define OSSL_KDF_NAME_PBKDF1 "PBKDF1" -#define OSSL_KDF_NAME_PBKDF2 "PBKDF2" -#define OSSL_KDF_NAME_SCRYPT "SCRYPT" -#define OSSL_KDF_NAME_SSHKDF "SSHKDF" -#define OSSL_KDF_NAME_SSKDF "SSKDF" -#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" -#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" -#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" -#define OSSL_KDF_NAME_X963KDF "X963KDF" -#define OSSL_KDF_NAME_KBKDF "KBKDF" -#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" - -/* Known RAND names */ -#define OSSL_RAND_PARAM_STATE "state" -#define OSSL_RAND_PARAM_STRENGTH "strength" -#define OSSL_RAND_PARAM_MAX_REQUEST "max_request" -#define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" -#define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" -#define OSSL_RAND_PARAM_GENERATE "generate" - -/* RAND/DRBG names */ -#define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" -#define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" -#define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" -#define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" -#define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" -#define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" -#define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" -#define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" -#define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" -#define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" -#define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES -#define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST -#define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER -#define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC -#define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" - -/* DRBG call back parameters */ -#define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" -#define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" -#define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" -#define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" -#define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" -#define OSSL_DRBG_PARAM_SIZE "size" - -/* PKEY parameters */ -/* Common PKEY parameters */ -#define OSSL_PKEY_PARAM_BITS "bits" /* integer */ -#define OSSL_PKEY_PARAM_MAX_SIZE "max-size" /* integer */ -#define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" /* integer */ -#define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST -#define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ -#define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE /* utf8 string */ -#define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES -#define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" /* utf8 string */ -#define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" /* utf8 string */ -#define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" -#define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" -#define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" -#define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" -#define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" -#define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" -#define OSSL_PKEY_PARAM_GROUP_NAME "group" -#define OSSL_PKEY_PARAM_DIST_ID "distid" -#define OSSL_PKEY_PARAM_PUB_KEY "pub" -#define OSSL_PKEY_PARAM_PRIV_KEY "priv" - -/* Diffie-Hellman/DSA Parameters */ -#define OSSL_PKEY_PARAM_FFC_P "p" -#define OSSL_PKEY_PARAM_FFC_G "g" -#define OSSL_PKEY_PARAM_FFC_Q "q" -#define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" -#define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" -#define OSSL_PKEY_PARAM_FFC_SEED "seed" -#define OSSL_PKEY_PARAM_FFC_COFACTOR "j" -#define OSSL_PKEY_PARAM_FFC_H "hindex" -#define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" -#define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" -#define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" - -/* Diffie-Hellman params */ -#define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" -#define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" - -/* Elliptic Curve Domain Parameters */ -#define OSSL_PKEY_PARAM_EC_PUB_X "qx" -#define OSSL_PKEY_PARAM_EC_PUB_Y "qy" - -/* Elliptic Curve Explicit Domain Parameters */ -#define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" -#define OSSL_PKEY_PARAM_EC_P "p" -#define OSSL_PKEY_PARAM_EC_A "a" -#define OSSL_PKEY_PARAM_EC_B "b" -#define OSSL_PKEY_PARAM_EC_GENERATOR "generator" -#define OSSL_PKEY_PARAM_EC_ORDER "order" -#define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" -#define OSSL_PKEY_PARAM_EC_SEED "seed" -#define OSSL_PKEY_PARAM_EC_CHAR2_M "m" -#define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" -#define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" -#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" -#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" -#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" -#define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" - -/* Elliptic Curve Key Parameters */ -#define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" -#define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH \ - OSSL_PKEY_PARAM_USE_COFACTOR_FLAG - -/* RSA Keys */ -/* - * n, e, d are the usual public and private key components - * - * rsa-num is the number of factors, including p and q - * rsa-factor is used for each factor: p, q, r_i (i = 3, ...) - * rsa-exponent is used for each exponent: dP, dQ, d_i (i = 3, ...) - * rsa-coefficient is used for each coefficient: qInv, t_i (i = 3, ...) - * - * The number of rsa-factor items must be equal to the number of rsa-exponent - * items, and the number of rsa-coefficients must be one less. - * (the base i for the coefficients is 2, not 1, at least as implied by - * RFC 8017) - */ -#define OSSL_PKEY_PARAM_RSA_N "n" -#define OSSL_PKEY_PARAM_RSA_E "e" -#define OSSL_PKEY_PARAM_RSA_D "d" -#define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" -#define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" -#define OSSL_PKEY_PARAM_RSA_FACTOR1 OSSL_PKEY_PARAM_RSA_FACTOR"1" -#define OSSL_PKEY_PARAM_RSA_FACTOR2 OSSL_PKEY_PARAM_RSA_FACTOR"2" -#define OSSL_PKEY_PARAM_RSA_FACTOR3 OSSL_PKEY_PARAM_RSA_FACTOR"3" -#define OSSL_PKEY_PARAM_RSA_FACTOR4 OSSL_PKEY_PARAM_RSA_FACTOR"4" -#define OSSL_PKEY_PARAM_RSA_FACTOR5 OSSL_PKEY_PARAM_RSA_FACTOR"5" -#define OSSL_PKEY_PARAM_RSA_FACTOR6 OSSL_PKEY_PARAM_RSA_FACTOR"6" -#define OSSL_PKEY_PARAM_RSA_FACTOR7 OSSL_PKEY_PARAM_RSA_FACTOR"7" -#define OSSL_PKEY_PARAM_RSA_FACTOR8 OSSL_PKEY_PARAM_RSA_FACTOR"8" -#define OSSL_PKEY_PARAM_RSA_FACTOR9 OSSL_PKEY_PARAM_RSA_FACTOR"9" -#define OSSL_PKEY_PARAM_RSA_FACTOR10 OSSL_PKEY_PARAM_RSA_FACTOR"10" -#define OSSL_PKEY_PARAM_RSA_EXPONENT1 OSSL_PKEY_PARAM_RSA_EXPONENT"1" -#define OSSL_PKEY_PARAM_RSA_EXPONENT2 OSSL_PKEY_PARAM_RSA_EXPONENT"2" -#define OSSL_PKEY_PARAM_RSA_EXPONENT3 OSSL_PKEY_PARAM_RSA_EXPONENT"3" -#define OSSL_PKEY_PARAM_RSA_EXPONENT4 OSSL_PKEY_PARAM_RSA_EXPONENT"4" -#define OSSL_PKEY_PARAM_RSA_EXPONENT5 OSSL_PKEY_PARAM_RSA_EXPONENT"5" -#define OSSL_PKEY_PARAM_RSA_EXPONENT6 OSSL_PKEY_PARAM_RSA_EXPONENT"6" -#define OSSL_PKEY_PARAM_RSA_EXPONENT7 OSSL_PKEY_PARAM_RSA_EXPONENT"7" -#define OSSL_PKEY_PARAM_RSA_EXPONENT8 OSSL_PKEY_PARAM_RSA_EXPONENT"8" -#define OSSL_PKEY_PARAM_RSA_EXPONENT9 OSSL_PKEY_PARAM_RSA_EXPONENT"9" -#define OSSL_PKEY_PARAM_RSA_EXPONENT10 OSSL_PKEY_PARAM_RSA_EXPONENT"10" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 OSSL_PKEY_PARAM_RSA_COEFFICIENT"1" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 OSSL_PKEY_PARAM_RSA_COEFFICIENT"2" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 OSSL_PKEY_PARAM_RSA_COEFFICIENT"3" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 OSSL_PKEY_PARAM_RSA_COEFFICIENT"4" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 OSSL_PKEY_PARAM_RSA_COEFFICIENT"5" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 OSSL_PKEY_PARAM_RSA_COEFFICIENT"6" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 OSSL_PKEY_PARAM_RSA_COEFFICIENT"7" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 OSSL_PKEY_PARAM_RSA_COEFFICIENT"8" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 OSSL_PKEY_PARAM_RSA_COEFFICIENT"9" +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" /* RSA padding modes */ -#define OSSL_PKEY_RSA_PAD_MODE_NONE "none" -#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" -#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" -#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" -#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" /* RSA pss padding salt length */ -#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" -#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" -#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" -#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" - -/* Key generation parameters */ -#define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS -#define OSSL_PKEY_PARAM_RSA_PRIMES "primes" -#define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES -#define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC -#define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST -#define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" - -/* Key generation parameters */ -#define OSSL_PKEY_PARAM_FFC_TYPE "type" -#define OSSL_PKEY_PARAM_FFC_PBITS "pbits" -#define OSSL_PKEY_PARAM_FFC_QBITS "qbits" -#define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES - -#define OSSL_PKEY_PARAM_EC_ENCODING "encoding" /* utf8_string */ -#define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" -#define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" -#define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" /* OSSL_PKEY_PARAM_EC_ENCODING values */ -#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" -#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" -#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" -#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" -#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" -#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" -#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" -#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" - -/* Key Exchange parameters */ -#define OSSL_EXCHANGE_PARAM_PAD "pad" /* uint */ -#define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" /* int */ -#define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" /* utf8_string */ -#define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" /* utf8_string */ -#define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" /* utf8_string */ -#define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" /* size_t */ -/* The following parameter is an octet_string on set and an octet_ptr on get */ -#define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" - -/* Signature parameters */ -#define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id" -#define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE -#define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES -#define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" -#define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST -#define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES \ - OSSL_PKEY_PARAM_MGF1_PROPERTIES -#define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE - -/* Asym cipher parameters */ -#define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES -#define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE -#define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE -#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST \ - OSSL_PKEY_PARAM_MGF1_DIGEST -#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS \ - OSSL_PKEY_PARAM_MGF1_PROPERTIES -#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST -#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" -/* The following parameter is an octet_string on set and an octet_ptr on get */ -#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" -#define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" -#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" - -/* - * Encoder / decoder parameters - */ -#define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER -#define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES -/* Currently PVK only, but reusable for others as needed */ -#define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" -#define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" /* integer */ - -#define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES - -/* Passphrase callback parameters */ -#define OSSL_PASSPHRASE_PARAM_INFO "info" - -/* Keygen callback parameters, from provider to libcrypto */ -#define OSSL_GEN_PARAM_POTENTIAL "potential" /* integer */ -#define OSSL_GEN_PARAM_ITERATION "iteration" /* integer */ - -/* ACVP Test parameters : These should not be used normally */ -#define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" -#define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" -#define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" -#define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" -#define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" -#define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" -#define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" -#define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" -#define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" -#define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" -#define OSSL_SIGNATURE_PARAM_KAT "kat" - -/* KEM parameters */ -#define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" /* OSSL_KEM_PARAM_OPERATION values */ #define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" -/* Capabilities */ - -/* TLS-GROUP Capability */ -#define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" -#define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" -#define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" -#define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" -#define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" -#define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" -#define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" -#define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" -#define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" -#define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" - -/*- - * storemgmt parameters - */ - -/* - * Used by storemgmt_ctx_set_params(): - * - * - OSSL_STORE_PARAM_EXPECT is an INTEGER, and the value is any of the - * OSSL_STORE_INFO numbers. This is used to set the expected type of - * object loaded. - * - * - OSSL_STORE_PARAM_SUBJECT, OSSL_STORE_PARAM_ISSUER, - * OSSL_STORE_PARAM_SERIAL, OSSL_STORE_PARAM_FINGERPRINT, - * OSSL_STORE_PARAM_DIGEST, OSSL_STORE_PARAM_ALIAS - * are used as search criteria. - * (OSSL_STORE_PARAM_DIGEST is used with OSSL_STORE_PARAM_FINGERPRINT) - */ -#define OSSL_STORE_PARAM_EXPECT "expect" /* INTEGER */ -#define OSSL_STORE_PARAM_SUBJECT "subject" /* DER blob => OCTET_STRING */ -#define OSSL_STORE_PARAM_ISSUER "name" /* DER blob => OCTET_STRING */ -#define OSSL_STORE_PARAM_SERIAL "serial" /* INTEGER */ -#define OSSL_STORE_PARAM_DIGEST "digest" /* UTF8_STRING */ -#define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" /* OCTET_STRING */ -#define OSSL_STORE_PARAM_ALIAS "alias" /* UTF8_STRING */ - -/* You may want to pass properties for the provider implementation to use */ -#define OSSL_STORE_PARAM_PROPERTIES "properties" /* utf8_string */ -/* OSSL_DECODER input type if a decoder is used by the store */ -#define OSSL_STORE_PARAM_INPUT_TYPE "input-type" /* UTF8_STRING */ +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" # ifdef __cplusplus } diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h.in new file mode 100644 index 00000000..c14520fe --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/core_names.h.in @@ -0,0 +1,119 @@ +/* + * {- join("\n * ", @autowarntext) -} + * + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +{- +use OpenSSL::paramnames qw(generate_public_macros); +-} + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +{- generate_public_macros(); -} + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h index 71b747ed..1f901f35 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -43,8 +43,8 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; + DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) @@ -198,12 +198,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h.in index 4d37ea6d..43411fa4 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crmf.h.in @@ -1,7 +1,7 @@ /*- * {- join("\n * ", @autowarntext) -} * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -44,8 +44,8 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; + DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) @@ -151,12 +151,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h index ab01aae8..55e00dcc 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -88,6 +88,7 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -552,6 +553,8 @@ void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +void OSSL_sleep(uint64_t millis); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h.in index fb0c7cbb..b2d691b9 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/crypto.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -89,6 +89,7 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -529,6 +530,8 @@ void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +void OSSL_sleep(uint64_t millis); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h index b6dd8c35..e6dd1192 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h.in index 16086b33..3fc2aaa9 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ct.h.in @@ -85,7 +85,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dh.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dh.h index 8bc17448..f1c0ed06 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dh.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dh.h @@ -144,7 +144,7 @@ DECLARE_ASN1_ITEM(DHparams) # define DH_GENERATOR_3 3 # define DH_GENERATOR_5 5 -/* DH_check error codes */ +/* DH_check error codes, some of them shared with DH_check_pub_key */ /* * NB: These values must align with the equivalently named macros in * internal/ffc.h. @@ -154,10 +154,10 @@ DECLARE_ASN1_ITEM(DHparams) # define DH_UNABLE_TO_CHECK_GENERATOR 0x04 # define DH_NOT_SUITABLE_GENERATOR 0x08 # define DH_CHECK_Q_NOT_PRIME 0x10 -# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_Q_VALUE 0x20 /* +DH_check_pub_key */ # define DH_CHECK_INVALID_J_VALUE 0x40 # define DH_MODULUS_TOO_SMALL 0x80 -# define DH_MODULUS_TOO_LARGE 0x100 +# define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ /* DH_check_pub_key error codes */ # define DH_CHECK_PUBKEY_TOO_SMALL 0x01 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dherr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dherr.h index 5d2a762a..2997d7d4 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dherr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dherr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -40,6 +40,7 @@ # define DH_R_INVALID_PARAMETER_NID 114 # define DH_R_INVALID_PUBKEY 102 # define DH_R_INVALID_SECRET 128 +# define DH_R_INVALID_SIZE 129 # define DH_R_KDF_PARAMETER_ERROR 112 # define DH_R_KEYS_NOT_SET 108 # define DH_R_MISSING_PUBKEY 125 @@ -50,6 +51,7 @@ # define DH_R_NO_PRIVATE_VALUE 100 # define DH_R_PARAMETER_ENCODING_ERROR 105 # define DH_R_PEER_KEY_ERROR 111 +# define DH_R_Q_TOO_LARGE 130 # define DH_R_SHARED_INFO_ERROR 113 # define DH_R_UNABLE_TO_CHECK_GENERATOR 121 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dsa.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dsa.h index 160404cc..109878e6 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dsa.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/dsa.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_os2.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_os2.h index 32e142a9..e01f6275 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_os2.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_os2.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -89,7 +89,7 @@ extern "C" { /* * DLL settings. This part is a bit tough, because it's up to the - * application implementor how he or she will link the application, so it + * application implementer how he or she will link the application, so it * requires some macro to be used. */ # ifdef OPENSSL_SYS_WINDOWS diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_ostime.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_ostime.h new file mode 100644 index 00000000..8a7cc988 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/e_ostime.h @@ -0,0 +1,30 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_E_OSTIME_H +# define OPENSSL_E_OSTIME_H +# pragma once + +# include +# include +# include + +/* + * This header guarantees that 'struct timeval' will be available. It includes + * the minimum headers needed to facilitate this. This may still be a + * substantial set of headers on some platforms (e.g. on Win32). + */ + +# if defined(OPENSSL_SYS_WINDOWS) +# include +# else +# include +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ec.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ec.h index be9fb2f0..e1cbe982 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ec.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ec.h @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -460,6 +460,22 @@ EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], OSSL_LIB_CTX *libctx, const char *propq); +/** + * Creates an OSSL_PARAM array with the parameters describing the given + * EC_GROUP. + * The resulting parameters may contain an explicit or a named curve depending + * on the EC_GROUP. + * \param group pointer to the EC_GROUP object + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param bnctx BN_CTX object (optional) + * \return newly created OSSL_PARAM array with the parameters + * describing the given EC_GROUP or NULL if an error occurred + */ +OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, + const char *propq, BN_CTX *bnctx); + /** * Creates a EC_GROUP object with a curve specified by a NID * \param libctx The associated library context or NULL for the default @@ -1111,7 +1127,7 @@ OSSL_DEPRECATEDIN_3_0 int EC_KEY_check_key(const EC_KEY *key); /** Indicates if an EC_KEY can be used for signing. * \param eckey the EC_KEY object - * \return 1 if can can sign and 0 otherwise. + * \return 1 if can sign and 0 otherwise. */ OSSL_DEPRECATEDIN_3_0 int EC_KEY_can_sign(const EC_KEY *eckey); @@ -1287,7 +1303,7 @@ OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *me OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); /** The old name for ecdh_KDF_X9_63 - * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, * it is actually specified in ANSI X9.63. * This identifier is retained for backwards compatibility */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h index 2abf2483..b987e31f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -496,6 +496,13 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h.in index 11dc2163..1ef09de0 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/err.h.in @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -485,6 +485,13 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evp.h index d0fce0c5..ea7620d6 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evp.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evp.h @@ -35,6 +35,7 @@ # define EVP_MAX_KEY_LENGTH 64 # define EVP_MAX_IV_LENGTH 16 # define EVP_MAX_BLOCK_LENGTH 32 +# define EVP_MAX_AEAD_TAG_LENGTH 16 # define PKCS5_SALT_LEN 8 /* Default PKCS#5 iteration count */ @@ -228,7 +229,8 @@ int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, * if the following flag is set. */ # define EVP_MD_CTX_FLAG_FINALISE 0x0200 -/* NOTE: 0x0400 is reserved for internal usage */ +/* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ + # ifndef OPENSSL_NO_DEPRECATED_3_0 OSSL_DEPRECATEDIN_3_0 EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); @@ -308,6 +310,7 @@ OSSL_DEPRECATEDIN_3_0 int # define EVP_CIPH_WRAP_MODE 0x10002 # define EVP_CIPH_OCB_MODE 0x10003 # define EVP_CIPH_SIV_MODE 0x10004 +# define EVP_CIPH_GCM_SIV_MODE 0x10005 # define EVP_CIPH_MODE 0xF0007 /* Set if variable length cipher */ # define EVP_CIPH_VARIABLE_LENGTH 0x8 @@ -674,7 +677,7 @@ void BIO_set_md(BIO *, const EVP_MD *md); # define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) # define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(c_pp)) -/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c, +__owur int EVP_Cipher(EVP_CIPHER_CTX *c, unsigned char *out, const unsigned char *in, unsigned int inl); @@ -752,7 +755,7 @@ int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); __owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv); -/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, +__owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv); @@ -760,16 +763,16 @@ __owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv, const OSSL_PARAM params[]); -/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); -/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); -/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); __owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv); -/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, +__owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv); @@ -777,17 +780,17 @@ __owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv, const OSSL_PARAM params[]); -/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); __owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); -/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, +__owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); __owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv, int enc); -/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, +__owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv, int enc); @@ -821,18 +824,18 @@ __owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, size_t siglen, const unsigned char *tbs, size_t tbslen); -int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, +__owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const char *mdname, OSSL_LIB_CTX *libctx, const char *props, EVP_PKEY *pkey, const OSSL_PARAM params[]); -/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, +__owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); -int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); __owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen); -int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, +__owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const char *mdname, OSSL_LIB_CTX *libctx, const char *props, EVP_PKEY *pkey, const OSSL_PARAM params[]); @@ -1927,14 +1930,17 @@ int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, + const OSSL_PARAM params[]); int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, unsigned char *wrappedkey, size_t *wrappedkeylen, unsigned char *genkey, size_t *genkeylen); int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, + const OSSL_PARAM params[]); int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, unsigned char *unwrapped, size_t *unwrappedlen, const unsigned char *wrapped, size_t wrappedlen); - typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evperr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evperr.h index a5053f6c..11f3faa4 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evperr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/evperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -110,11 +110,14 @@ # define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 # define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 # define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +# define EVP_R_UNKNOWN_BITS 166 # define EVP_R_UNKNOWN_CIPHER 160 # define EVP_R_UNKNOWN_DIGEST 161 # define EVP_R_UNKNOWN_KEY_TYPE 207 +# define EVP_R_UNKNOWN_MAX_SIZE 167 # define EVP_R_UNKNOWN_OPTION 169 # define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNKNOWN_SECURITY_BITS 168 # define EVP_R_UNSUPPORTED_ALGORITHM 156 # define EVP_R_UNSUPPORTED_CIPHER 107 # define EVP_R_UNSUPPORTED_KEYLENGTH 123 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/hpke.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/hpke.h new file mode 100644 index 00000000..af637ac6 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/hpke.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* APIs and data structures for HPKE (RFC9180) */ +#ifndef OSSL_HPKE_H +# define OSSL_HPKE_H +# pragma once + +# include + +/* HPKE modes */ +# define OSSL_HPKE_MODE_BASE 0 /* Base mode */ +# define OSSL_HPKE_MODE_PSK 1 /* Pre-shared key mode */ +# define OSSL_HPKE_MODE_AUTH 2 /* Authenticated mode */ +# define OSSL_HPKE_MODE_PSKAUTH 3 /* PSK+authenticated mode */ + +/* + * Max for ikm, psk, pskid, info and exporter contexts. + * RFC9180, section 7.2.1 RECOMMENDS 64 octets but we have test vectors from + * Appendix A.6.1 with a 66 octet IKM so we'll allow that. + */ +# define OSSL_HPKE_MAX_PARMLEN 66 +# define OSSL_HPKE_MIN_PSKLEN 32 +# define OSSL_HPKE_MAX_INFOLEN 1024 + +/* + * The (16bit) HPKE algorithm ID IANA codepoints + * If/when new IANA codepoints are added there are tables in + * crypto/hpke/hpke_util.c that must also be updated. + */ +# define OSSL_HPKE_KEM_ID_RESERVED 0x0000 /* not used */ +# define OSSL_HPKE_KEM_ID_P256 0x0010 /* NIST P-256 */ +# define OSSL_HPKE_KEM_ID_P384 0x0011 /* NIST P-384 */ +# define OSSL_HPKE_KEM_ID_P521 0x0012 /* NIST P-521 */ +# define OSSL_HPKE_KEM_ID_X25519 0x0020 /* Curve25519 */ +# define OSSL_HPKE_KEM_ID_X448 0x0021 /* Curve448 */ + +# define OSSL_HPKE_KDF_ID_RESERVED 0x0000 /* not used */ +# define OSSL_HPKE_KDF_ID_HKDF_SHA256 0x0001 /* HKDF-SHA256 */ +# define OSSL_HPKE_KDF_ID_HKDF_SHA384 0x0002 /* HKDF-SHA384 */ +# define OSSL_HPKE_KDF_ID_HKDF_SHA512 0x0003 /* HKDF-SHA512 */ + +# define OSSL_HPKE_AEAD_ID_RESERVED 0x0000 /* not used */ +# define OSSL_HPKE_AEAD_ID_AES_GCM_128 0x0001 /* AES-GCM-128 */ +# define OSSL_HPKE_AEAD_ID_AES_GCM_256 0x0002 /* AES-GCM-256 */ +# define OSSL_HPKE_AEAD_ID_CHACHA_POLY1305 0x0003 /* Chacha20-Poly1305 */ +# define OSSL_HPKE_AEAD_ID_EXPORTONLY 0xFFFF /* export-only fake ID */ + +/* strings for suite components */ +# define OSSL_HPKE_KEMSTR_P256 "P-256" /* KEM id 0x10 */ +# define OSSL_HPKE_KEMSTR_P384 "P-384" /* KEM id 0x11 */ +# define OSSL_HPKE_KEMSTR_P521 "P-521" /* KEM id 0x12 */ +# define OSSL_HPKE_KEMSTR_X25519 "X25519" /* KEM id 0x20 */ +# define OSSL_HPKE_KEMSTR_X448 "X448" /* KEM id 0x21 */ +# define OSSL_HPKE_KDFSTR_256 "hkdf-sha256" /* KDF id 1 */ +# define OSSL_HPKE_KDFSTR_384 "hkdf-sha384" /* KDF id 2 */ +# define OSSL_HPKE_KDFSTR_512 "hkdf-sha512" /* KDF id 3 */ +# define OSSL_HPKE_AEADSTR_AES128GCM "aes-128-gcm" /* AEAD id 1 */ +# define OSSL_HPKE_AEADSTR_AES256GCM "aes-256-gcm" /* AEAD id 2 */ +# define OSSL_HPKE_AEADSTR_CP "chacha20-poly1305" /* AEAD id 3 */ +# define OSSL_HPKE_AEADSTR_EXP "exporter" /* AEAD id 0xff */ + +/* + * Roles for use in creating an OSSL_HPKE_CTX, most + * important use of this is to control nonce re-use. + */ +# define OSSL_HPKE_ROLE_SENDER 0 +# define OSSL_HPKE_ROLE_RECEIVER 1 + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct { + uint16_t kem_id; /* Key Encapsulation Method id */ + uint16_t kdf_id; /* Key Derivation Function id */ + uint16_t aead_id; /* AEAD alg id */ +} OSSL_HPKE_SUITE; + +/** + * Suite constants, use this like: + * OSSL_HPKE_SUITE myvar = OSSL_HPKE_SUITE_DEFAULT; + */ +# ifndef OPENSSL_NO_ECX +# define OSSL_HPKE_SUITE_DEFAULT \ + {\ + OSSL_HPKE_KEM_ID_X25519, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +# else +# define OSSL_HPKE_SUITE_DEFAULT \ + {\ + OSSL_HPKE_KEM_ID_P256, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#endif + +typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX; + +OSSL_HPKE_CTX *OSSL_HPKE_CTX_new(int mode, OSSL_HPKE_SUITE suite, int role, + OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_HPKE_CTX_free(OSSL_HPKE_CTX *ctx); + +int OSSL_HPKE_encap(OSSL_HPKE_CTX *ctx, + unsigned char *enc, size_t *enclen, + const unsigned char *pub, size_t publen, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_seal(OSSL_HPKE_CTX *ctx, + unsigned char *ct, size_t *ctlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *pt, size_t ptlen); + +int OSSL_HPKE_keygen(OSSL_HPKE_SUITE suite, + unsigned char *pub, size_t *publen, EVP_PKEY **priv, + const unsigned char *ikm, size_t ikmlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_decap(OSSL_HPKE_CTX *ctx, + const unsigned char *enc, size_t enclen, + EVP_PKEY *recippriv, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_open(OSSL_HPKE_CTX *ctx, + unsigned char *pt, size_t *ptlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *ct, size_t ctlen); + +int OSSL_HPKE_export(OSSL_HPKE_CTX *ctx, + unsigned char *secret, + size_t secretlen, + const unsigned char *label, + size_t labellen); + +int OSSL_HPKE_CTX_set1_authpriv(OSSL_HPKE_CTX *ctx, EVP_PKEY *priv); +int OSSL_HPKE_CTX_set1_authpub(OSSL_HPKE_CTX *ctx, + const unsigned char *pub, + size_t publen); +int OSSL_HPKE_CTX_set1_psk(OSSL_HPKE_CTX *ctx, + const char *pskid, + const unsigned char *psk, size_t psklen); + +int OSSL_HPKE_CTX_set1_ikme(OSSL_HPKE_CTX *ctx, + const unsigned char *ikme, size_t ikmelen); + +int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); +int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); + +int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, + OSSL_HPKE_SUITE *suite, + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); +size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); +size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); +size_t OSSL_HPKE_get_recommended_ikmelen(OSSL_HPKE_SUITE suite); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/http.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/http.h index f7ab2142..a3cbf15f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/http.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/http.h @@ -1,5 +1,5 @@ /* - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright Siemens AG 2018-2020 * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -33,6 +33,8 @@ extern "C" { # define OPENSSL_HTTP_PROXY "HTTP_PROXY" # define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" +# ifndef OPENSSL_NO_HTTP + #define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) #define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) @@ -103,6 +105,8 @@ int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, const char *server, int use_ssl); + +# endif /* !defined(OPENSSL_NO_HTTP) */ # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h index f4155df1..8af9edd2 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h.in index dc344a54..c9dbd1f3 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/lhash.h.in @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/macros.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/macros.h index a614cd66..e9ef9387 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/macros.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/macros.h @@ -158,7 +158,7 @@ /* * Define macros for deprecation and simulated removal purposes. * - * The macros OSSL_DEPRECATED_{major}_{minor} are always defined for + * The macros OSSL_DEPRECATEDIN_{major}_{minor} are always defined for * all OpenSSL versions we care for. They can be used as attributes * in function declarations where appropriate. * @@ -169,6 +169,7 @@ * 'no-deprecated'. */ +# undef OPENSSL_NO_DEPRECATED_3_1 # undef OPENSSL_NO_DEPRECATED_3_0 # undef OPENSSL_NO_DEPRECATED_1_1_1 # undef OPENSSL_NO_DEPRECATED_1_1_0 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/obj_mac.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/obj_mac.h index 0e860276..e1b441b3 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/obj_mac.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/obj_mac.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/objects/objects.pl * - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved. * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at @@ -886,6 +886,14 @@ #define NID_id_ct_signedChecklist 1247 #define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_ASPA 1250 +#define OBJ_id_ct_ASPA OBJ_id_smime_ct,49L + +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_signedTAL 1284 +#define OBJ_id_ct_signedTAL OBJ_id_smime_ct,50L + #define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" #define NID_id_smime_aa_receiptRequest 212 #define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L @@ -1002,10 +1010,22 @@ #define NID_id_smime_aa_dvcs_dvc 240 #define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define OBJ_id_aa_ets_attrCertificateRefs OBJ_id_smime_aa,44L + +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define OBJ_id_aa_ets_attrRevocationRefs OBJ_id_smime_aa,45L + #define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" #define NID_id_smime_aa_signingCertificateV2 1086 #define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define OBJ_id_aa_ets_archiveTimestampV2 OBJ_id_smime_aa,48L + #define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" #define NID_id_smime_alg_ESDHwith3DES 241 #define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L @@ -1082,15 +1102,17 @@ #define NID_localKeyID 157 #define OBJ_localKeyID OBJ_pkcs9,21L +#define OBJ_ms_corp 1L,3L,6L,1L,4L,1L,311L + #define SN_ms_csp_name "CSPName" #define LN_ms_csp_name "Microsoft CSP Name" #define NID_ms_csp_name 417 -#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L +#define OBJ_ms_csp_name OBJ_ms_corp,17L,1L #define SN_LocalKeySet "LocalKeySet" #define LN_LocalKeySet "Microsoft Local Key set" #define NID_LocalKeySet 856 -#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L +#define OBJ_LocalKeySet OBJ_ms_corp,17L,2L #define OBJ_certTypes OBJ_pkcs9,22L @@ -1108,6 +1130,10 @@ #define NID_x509Crl 160 #define OBJ_x509Crl OBJ_crlTypes,1L +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define OBJ_id_aa_CMSAlgorithmProtection OBJ_pkcs9,52L + #define OBJ_pkcs12 OBJ_pkcs,12L #define OBJ_pkcs12_pbeids OBJ_pkcs12,1L @@ -1217,6 +1243,10 @@ #define NID_SM2_with_SM3 1204 #define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_hmacWithSM3 1281 +#define OBJ_hmacWithSM3 OBJ_sm3,3L,1L + #define LN_hmacWithSHA224 "hmacWithSHA224" #define NID_hmacWithSHA224 798 #define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L @@ -1300,42 +1330,62 @@ #define SN_ms_ext_req "msExtReq" #define LN_ms_ext_req "Microsoft Extension Request" #define NID_ms_ext_req 171 -#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L +#define OBJ_ms_ext_req OBJ_ms_corp,2L,1L,14L #define SN_ms_code_ind "msCodeInd" #define LN_ms_code_ind "Microsoft Individual Code Signing" #define NID_ms_code_ind 134 -#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L +#define OBJ_ms_code_ind OBJ_ms_corp,2L,1L,21L #define SN_ms_code_com "msCodeCom" #define LN_ms_code_com "Microsoft Commercial Code Signing" #define NID_ms_code_com 135 -#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L +#define OBJ_ms_code_com OBJ_ms_corp,2L,1L,22L #define SN_ms_ctl_sign "msCTLSign" #define LN_ms_ctl_sign "Microsoft Trust List Signing" #define NID_ms_ctl_sign 136 -#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L +#define OBJ_ms_ctl_sign OBJ_ms_corp,10L,3L,1L #define SN_ms_sgc "msSGC" #define LN_ms_sgc "Microsoft Server Gated Crypto" #define NID_ms_sgc 137 -#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L +#define OBJ_ms_sgc OBJ_ms_corp,10L,3L,3L #define SN_ms_efs "msEFS" #define LN_ms_efs "Microsoft Encrypted File System" #define NID_ms_efs 138 -#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L +#define OBJ_ms_efs OBJ_ms_corp,10L,3L,4L #define SN_ms_smartcard_login "msSmartcardLogin" #define LN_ms_smartcard_login "Microsoft Smartcard Login" #define NID_ms_smartcard_login 648 -#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L +#define OBJ_ms_smartcard_login OBJ_ms_corp,20L,2L,2L #define SN_ms_upn "msUPN" #define LN_ms_upn "Microsoft User Principal Name" #define NID_ms_upn 649 -#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L +#define OBJ_ms_upn OBJ_ms_corp,20L,2L,3L + +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define NID_ms_ntds_sec_ext 1292 +#define OBJ_ms_ntds_sec_ext OBJ_ms_corp,25L,2L + +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define NID_ms_ntds_obj_sid 1291 +#define OBJ_ms_ntds_obj_sid OBJ_ms_corp,25L,2L,1L + +#define SN_ms_cert_templ "ms-cert-templ" +#define LN_ms_cert_templ "Microsoft certificate template" +#define NID_ms_cert_templ 1293 +#define OBJ_ms_cert_templ OBJ_ms_corp,21L,7L + +#define SN_ms_app_policies "ms-app-policies" +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define NID_ms_app_policies 1294 +#define OBJ_ms_app_policies OBJ_ms_corp,21L,10L #define SN_idea_cbc "IDEA-CBC" #define LN_idea_cbc "idea-cbc" @@ -1503,6 +1553,18 @@ #define NID_id_mod_cmp2000 284 #define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000_02 1251 +#define OBJ_id_mod_cmp2000_02 OBJ_id_pkix_mod,50L + +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2021_88 1252 +#define OBJ_id_mod_cmp2021_88 OBJ_id_pkix_mod,99L + +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_02 1253 +#define OBJ_id_mod_cmp2021_02 OBJ_id_pkix_mod,100L + #define SN_info_access "authorityInfoAccess" #define LN_info_access "Authority Information Access" #define NID_info_access 177 @@ -1783,6 +1845,22 @@ #define NID_id_it_certReqTemplate 1225 #define OBJ_id_it_certReqTemplate OBJ_id_it,19L +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define NID_id_it_rootCaCert 1254 +#define OBJ_id_it_rootCaCert OBJ_id_it,20L + +#define SN_id_it_certProfile "id-it-certProfile" +#define NID_id_it_certProfile 1255 +#define OBJ_id_it_certProfile OBJ_id_it,21L + +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_crlStatusList 1256 +#define OBJ_id_it_crlStatusList OBJ_id_it,22L + +#define SN_id_it_crls "id-it-crls" +#define NID_id_it_crls 1257 +#define OBJ_id_it_crls OBJ_id_it,23L + #define SN_id_regCtrl "id-regCtrl" #define NID_id_regCtrl 313 #define OBJ_id_regCtrl OBJ_id_pkip,1L @@ -1815,6 +1893,18 @@ #define NID_id_regCtrl_protocolEncrKey 320 #define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_altCertTemplate 1258 +#define OBJ_id_regCtrl_altCertTemplate OBJ_id_regCtrl,7L + +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_algId 1259 +#define OBJ_id_regCtrl_algId OBJ_id_regCtrl,11L + +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define NID_id_regCtrl_rsaKeyLen 1260 +#define OBJ_id_regCtrl_rsaKeyLen OBJ_id_regCtrl,12L + #define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" #define NID_id_regInfo_utf8Pairs 321 #define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L @@ -2649,11 +2739,56 @@ #define NID_ext_key_usage 126 #define OBJ_ext_key_usage OBJ_id_ce,37L +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define NID_authority_attribute_identifier 1295 +#define OBJ_authority_attribute_identifier OBJ_id_ce,38L + +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define NID_role_spec_cert_identifier 1296 +#define OBJ_role_spec_cert_identifier OBJ_id_ce,39L + +#define SN_basic_att_constraints "basicAttConstraints" +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define NID_basic_att_constraints 1297 +#define OBJ_basic_att_constraints OBJ_id_ce,41L + +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define NID_delegated_name_constraints 1298 +#define OBJ_delegated_name_constraints OBJ_id_ce,42L + +#define SN_time_specification "timeSpecification" +#define LN_time_specification "X509v3 Time Specification" +#define NID_time_specification 1299 +#define OBJ_time_specification OBJ_id_ce,43L + #define SN_freshest_crl "freshestCRL" #define LN_freshest_crl "X509v3 Freshest CRL" #define NID_freshest_crl 857 #define OBJ_freshest_crl OBJ_id_ce,46L +#define SN_attribute_descriptor "attributeDescriptor" +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define NID_attribute_descriptor 1300 +#define OBJ_attribute_descriptor OBJ_id_ce,48L + +#define SN_user_notice "userNotice" +#define LN_user_notice "X509v3 User Notice" +#define NID_user_notice 1301 +#define OBJ_user_notice OBJ_id_ce,49L + +#define SN_soa_identifier "sOAIdentifier" +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define NID_soa_identifier 1302 +#define OBJ_soa_identifier OBJ_id_ce,50L + +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define NID_acceptable_cert_policies 1303 +#define OBJ_acceptable_cert_policies OBJ_id_ce,52L + #define SN_inhibit_any_policy "inhibitAnyPolicy" #define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" #define NID_inhibit_any_policy 748 @@ -2669,6 +2804,86 @@ #define NID_no_rev_avail 403 #define OBJ_no_rev_avail OBJ_id_ce,56L +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define NID_acceptable_privilege_policies 1304 +#define OBJ_acceptable_privilege_policies OBJ_id_ce,57L + +#define SN_indirect_issuer "indirectIssuer" +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define NID_indirect_issuer 1305 +#define OBJ_indirect_issuer OBJ_id_ce,61L + +#define SN_no_assertion "noAssertion" +#define LN_no_assertion "X509v3 No Assertion" +#define NID_no_assertion 1306 +#define OBJ_no_assertion OBJ_id_ce,62L + +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define NID_id_aa_issuing_distribution_point 1307 +#define OBJ_id_aa_issuing_distribution_point OBJ_id_ce,63L + +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define NID_issued_on_behalf_of 1308 +#define OBJ_issued_on_behalf_of OBJ_id_ce,64L + +#define SN_single_use "singleUse" +#define LN_single_use "X509v3 Single Use" +#define NID_single_use 1309 +#define OBJ_single_use OBJ_id_ce,65L + +#define SN_group_ac "groupAC" +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define NID_group_ac 1310 +#define OBJ_group_ac OBJ_id_ce,66L + +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define NID_allowed_attribute_assignments 1311 +#define OBJ_allowed_attribute_assignments OBJ_id_ce,67L + +#define SN_attribute_mappings "attributeMappings" +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define NID_attribute_mappings 1312 +#define OBJ_attribute_mappings OBJ_id_ce,68L + +#define SN_holder_name_constraints "holderNameConstraints" +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define NID_holder_name_constraints 1313 +#define OBJ_holder_name_constraints OBJ_id_ce,69L + +#define SN_authorization_validation "authorizationValidation" +#define LN_authorization_validation "X509v3 Authorization Validation" +#define NID_authorization_validation 1314 +#define OBJ_authorization_validation OBJ_id_ce,70L + +#define SN_prot_restrict "protRestrict" +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define NID_prot_restrict 1315 +#define OBJ_prot_restrict OBJ_id_ce,71L + +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define NID_subject_alt_public_key_info 1316 +#define OBJ_subject_alt_public_key_info OBJ_id_ce,72L + +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define NID_alt_signature_algorithm 1317 +#define OBJ_alt_signature_algorithm OBJ_id_ce,73L + +#define SN_alt_signature_value "altSignatureValue" +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define NID_alt_signature_value 1318 +#define OBJ_alt_signature_value OBJ_id_ce,74L + +#define SN_associated_information "associatedInformation" +#define LN_associated_information "X509v3 Associated Information" +#define NID_associated_information 1319 +#define OBJ_associated_information OBJ_id_ce,75L + #define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" #define LN_anyExtendedKeyUsage "Any Extended Key Usage" #define NID_anyExtendedKeyUsage 910 @@ -3220,6 +3435,70 @@ #define NID_hold_instruction_reject 433 #define OBJ_hold_instruction_reject OBJ_holdInstruction,3L +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_itu_t_identified_organization 1264 +#define OBJ_itu_t_identified_organization OBJ_itu_t,4L + +#define SN_etsi "etsi" +#define NID_etsi 1265 +#define OBJ_etsi OBJ_itu_t_identified_organization,0L + +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_electronic_signature_standard 1266 +#define OBJ_electronic_signature_standard OBJ_etsi,1733L + +#define SN_ess_attributes "ess-attributes" +#define NID_ess_attributes 1267 +#define OBJ_ess_attributes OBJ_electronic_signature_standard,2L + +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_id_aa_ets_mimeType 1268 +#define OBJ_id_aa_ets_mimeType OBJ_ess_attributes,1L + +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_longTermValidation 1269 +#define OBJ_id_aa_ets_longTermValidation OBJ_ess_attributes,2L + +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define OBJ_id_aa_ets_SignaturePolicyDocument OBJ_ess_attributes,3L + +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define OBJ_id_aa_ets_archiveTimestampV3 OBJ_ess_attributes,4L + +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ATSHashIndex 1272 +#define OBJ_id_aa_ATSHashIndex OBJ_ess_attributes,5L + +#define SN_cades "cades" +#define NID_cades 1273 +#define OBJ_cades OBJ_etsi,19122L + +#define SN_cades_attributes "cades-attributes" +#define NID_cades_attributes 1274 +#define OBJ_cades_attributes OBJ_cades,1L + +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_id_aa_ets_signerAttrV2 1275 +#define OBJ_id_aa_ets_signerAttrV2 OBJ_cades_attributes,1L + +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define OBJ_id_aa_ets_sigPolicyStore OBJ_cades_attributes,3L + +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define OBJ_id_aa_ATSHashIndex_v2 OBJ_cades_attributes,4L + +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define OBJ_id_aa_ATSHashIndex_v3 OBJ_cades_attributes,5L + +#define SN_signedAssertion "signedAssertion" +#define NID_signedAssertion 1279 +#define OBJ_signedAssertion OBJ_cades_attributes,6L + #define SN_data "data" #define NID_data 434 #define OBJ_data OBJ_itu_t,9L @@ -4952,6 +5231,21 @@ #define NID_sm4_ctr 1139 #define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L +#define SN_sm4_gcm "SM4-GCM" +#define LN_sm4_gcm "sm4-gcm" +#define NID_sm4_gcm 1248 +#define OBJ_sm4_gcm OBJ_sm_scheme,104L,8L + +#define SN_sm4_ccm "SM4-CCM" +#define LN_sm4_ccm "sm4-ccm" +#define NID_sm4_ccm 1249 +#define OBJ_sm4_ccm OBJ_sm_scheme,104L,9L + +#define SN_sm4_xts "SM4-XTS" +#define LN_sm4_xts "sm4-xts" +#define NID_sm4_xts 1290 +#define OBJ_sm4_xts OBJ_sm_scheme,104L,10L + #define SN_hmac "HMAC" #define LN_hmac "hmac" #define NID_hmac 855 @@ -5029,6 +5323,9 @@ #define NID_brainpoolP256r1 927 #define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1tls13 1285 + #define SN_brainpoolP256t1 "brainpoolP256t1" #define NID_brainpoolP256t1 928 #define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L @@ -5045,6 +5342,9 @@ #define NID_brainpoolP384r1 931 #define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1tls13 1286 + #define SN_brainpoolP384t1 "brainpoolP384t1" #define NID_brainpoolP384t1 932 #define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L @@ -5053,6 +5353,9 @@ #define NID_brainpoolP512r1 933 #define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1tls13 1287 + #define SN_brainpoolP512t1 "brainpoolP512t1" #define NID_brainpoolP512t1 934 #define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L @@ -5130,17 +5433,17 @@ #define SN_jurisdictionLocalityName "jurisdictionL" #define LN_jurisdictionLocalityName "jurisdictionLocalityName" #define NID_jurisdictionLocalityName 955 -#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L +#define OBJ_jurisdictionLocalityName OBJ_ms_corp,60L,2L,1L,1L #define SN_jurisdictionStateOrProvinceName "jurisdictionST" #define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" #define NID_jurisdictionStateOrProvinceName 956 -#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L +#define OBJ_jurisdictionStateOrProvinceName OBJ_ms_corp,60L,2L,1L,2L #define SN_jurisdictionCountryName "jurisdictionC" #define LN_jurisdictionCountryName "jurisdictionCountryName" #define NID_jurisdictionCountryName 957 -#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L +#define OBJ_jurisdictionCountryName OBJ_ms_corp,60L,2L,1L,3L #define SN_id_scrypt "id-scrypt" #define LN_id_scrypt "scrypt" @@ -5432,6 +5735,24 @@ #define LN_aes_256_siv "aes-256-siv" #define NID_aes_256_siv 1200 +#define SN_oracle "oracle-organization" +#define LN_oracle "Oracle organization" +#define NID_oracle 1282 +#define OBJ_oracle OBJ_joint_iso_itu_t,16L,840L,1L,113894L + +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define OBJ_oracle_jdk_trustedkeyusage OBJ_oracle,746875L,1L,1L + +#define SN_brotli "brotli" +#define LN_brotli "Brotli compression" +#define NID_brotli 1288 + +#define SN_zstd "zstd" +#define LN_zstd "Zstandard compression" +#define NID_zstd 1289 + #endif /* OPENSSL_OBJ_MAC_H */ #ifndef OPENSSL_NO_DEPRECATED_3_0 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/opensslv.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/opensslv.h index b87a4aa1..7f1ecf66 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/opensslv.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 1 -# define OPENSSL_VERSION_PATCH 4 +# define OPENSSL_VERSION_MINOR 2 +# define OPENSSL_VERSION_PATCH 0 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.1.4" -# define OPENSSL_FULL_VERSION_STR "3.1.4" +# define OPENSSL_VERSION_STR "3.2.0" +# define OPENSSL_FULL_VERSION_STR "3.2.0" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "24 Oct 2023" +# define OPENSSL_RELEASE_DATE "23 Nov 2023" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.1.4 24 Oct 2023" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.2.0 23 Nov 2023" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pem.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pem.h index 000d9c89..0446c770 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pem.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pem.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -57,6 +57,7 @@ extern "C" { # define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" # define PEM_STRING_PARAMETERS "PARAMETERS" # define PEM_STRING_CMS "CMS" +# define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" # define PEM_TYPE_ENCRYPTED 10 # define PEM_TYPE_MIC_ONLY 20 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h index 9e20fc1a..b08b0bc2 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -44,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -133,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -221,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -308,6 +312,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -315,6 +320,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h.in index cf956b41..35759d4d 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -45,6 +45,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -110,7 +111,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -198,6 +201,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +289,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -292,6 +297,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12err.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12err.h index 933c8329..abce3736 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12err.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs12err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,7 @@ /* * PKCS12 reason codes. */ +# define PKCS12_R_CALLBACK_FAILED 115 # define PKCS12_R_CANT_PACK_STRUCTURE 100 # define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 # define PKCS12_R_DECODE_ERROR 101 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h index f824546c..dc46c511 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h @@ -134,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -161,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -203,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -344,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h.in index a346bc74..11a636e1 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/pkcs7.h.in @@ -87,8 +87,8 @@ typedef struct pkcs7_recip_info_st { typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -114,8 +114,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -156,7 +156,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -273,13 +273,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/prov_ssl.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/prov_ssl.h index d3e0896c..76d01e1e 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/prov_ssl.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/prov_ssl.h @@ -1,5 +1,5 @@ /* - * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -19,6 +19,7 @@ extern "C" { # define SSL_MAX_MASTER_KEY_LENGTH 48 +/* SSL/TLS uses a 2 byte unsigned version number */ # define SSL3_VERSION 0x0300 # define TLS1_VERSION 0x0301 # define TLS1_1_VERSION 0x0302 @@ -28,6 +29,9 @@ extern "C" { # define DTLS1_2_VERSION 0xFEFD # define DTLS1_BAD_VER 0x0100 +/* QUIC uses a 4 byte unsigned version number */ +# define OSSL_QUIC1_VERSION 0x0000001 + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/proverr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/proverr.h index 5d5c16d9..d9ef5681 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/proverr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/proverr.h @@ -52,6 +52,7 @@ # define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 # define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 # define PROV_R_INVALID_AAD 108 +# define PROV_R_INVALID_AEAD 231 # define PROV_R_INVALID_CONFIG_DATA 211 # define PROV_R_INVALID_CONSTANT_LENGTH 157 # define PROV_R_INVALID_CURVE 176 @@ -63,9 +64,11 @@ # define PROV_R_INVALID_INPUT_LENGTH 230 # define PROV_R_INVALID_ITERATION_COUNT 123 # define PROV_R_INVALID_IV_LENGTH 109 +# define PROV_R_INVALID_KDF 232 # define PROV_R_INVALID_KEY 158 # define PROV_R_INVALID_KEY_LENGTH 105 # define PROV_R_INVALID_MAC 151 +# define PROV_R_INVALID_MEMORY_SIZE 235 # define PROV_R_INVALID_MGF1_MD 167 # define PROV_R_INVALID_MODE 125 # define PROV_R_INVALID_OUTPUT_LENGTH 217 @@ -77,6 +80,7 @@ # define PROV_R_INVALID_STATE 212 # define PROV_R_INVALID_TAG 110 # define PROV_R_INVALID_TAG_LENGTH 118 +# define PROV_R_INVALID_THREAD_POOL_SIZE 234 # define PROV_R_INVALID_UKM_LENGTH 200 # define PROV_R_INVALID_X931_DIGEST 170 # define PROV_R_IN_ERROR_STATE 192 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/provider.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/provider.h index dc86ff58..24ec0827 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/provider.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/provider.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -17,13 +17,19 @@ extern "C" { # endif -/* Set the default provider search path */ +/* Set and Get a library context search path */ int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); +const char *OSSL_PROVIDER_get0_default_search_path(OSSL_LIB_CTX *libctx); /* Load and unload a provider */ OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params); OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, int retain_fallbacks); +OSSL_PROVIDER *OSSL_PROVIDER_try_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params, + int retain_fallbacks); int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/quic.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/quic.h new file mode 100644 index 00000000..74a6345d --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/quic.h @@ -0,0 +1,37 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_QUIC_H +# define OPENSSL_QUIC_H +# pragma once + +# include +# include + +# ifndef OPENSSL_NO_QUIC + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Method used for non-thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_method(void); +/* + * Method used for thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); + +# ifdef __cplusplus +} +# endif + +# endif /* OPENSSL_NO_QUIC */ +#endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rand.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rand.h index 90e0f0a0..1fa1129e 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rand.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rand.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rsa.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rsa.h index d0c95992..167427d3 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rsa.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/rsa.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -189,6 +189,8 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); # define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + # define RSA_PKCS1_PADDING 1 # define RSA_NO_PADDING 3 # define RSA_PKCS1_OAEP_PADDING 4 @@ -198,6 +200,9 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); # define RSA_PKCS1_PSS_PADDING 6 # define RSA_PKCS1_WITH_TLS_PADDING 7 +/* internal RSA_ only */ +# define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + # define RSA_PKCS1_PADDING_SIZE 11 # define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sha.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sha.h index 6e65a040..163a7d58 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sha.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sha.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -81,6 +81,7 @@ OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +# define SHA256_192_DIGEST_LENGTH 24 # define SHA224_DIGEST_LENGTH 28 # define SHA256_DIGEST_LENGTH 32 # define SHA384_DIGEST_LENGTH 48 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/srtp.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/srtp.h index d64606e5..2c2c3344 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/srtp.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/srtp.h @@ -28,16 +28,28 @@ extern "C" { #endif -# define SRTP_AES128_CM_SHA1_80 0x0001 -# define SRTP_AES128_CM_SHA1_32 0x0002 -# define SRTP_AES128_F8_SHA1_80 0x0003 -# define SRTP_AES128_F8_SHA1_32 0x0004 -# define SRTP_NULL_SHA1_80 0x0005 -# define SRTP_NULL_SHA1_32 0x0006 +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 /* AEAD SRTP protection profiles from RFC 7714 */ -# define SRTP_AEAD_AES_128_GCM 0x0007 -# define SRTP_AEAD_AES_256_GCM 0x0008 +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +/* DOUBLE AEAD SRTP protection profiles from RFC 8723 */ +# define SRTP_DOUBLE_AEAD_AES_128_GCM_AEAD_AES_128_GCM 0x0009 +# define SRTP_DOUBLE_AEAD_AES_256_GCM_AEAD_AES_256_GCM 0x000A + +/* ARIA SRTP protection profiles from RFC 8269 */ +# define SRTP_ARIA_128_CTR_HMAC_SHA1_80 0x000B +# define SRTP_ARIA_128_CTR_HMAC_SHA1_32 0x000C +# define SRTP_ARIA_256_CTR_HMAC_SHA1_80 0x000D +# define SRTP_ARIA_256_CTR_HMAC_SHA1_32 0x000E +# define SRTP_AEAD_ARIA_128_GCM 0x000F +# define SRTP_AEAD_ARIA_256_GCM 0x0010 # ifndef OPENSSL_NO_SRTP diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h index 942f20e6..2b43485f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -281,28 +282,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -433,6 +437,17 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) /* * Option "collections." @@ -577,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -968,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1069,6 +1087,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1078,6 +1097,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1088,10 +1108,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1383,6 +1405,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 @@ -1488,6 +1511,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ @@ -1552,6 +1577,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1786,6 +1812,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1843,6 +1872,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1935,6 +1966,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1989,6 +2022,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2297,6 +2331,105 @@ size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2596,6 +2729,36 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h.in index f03f52fb..9f91039f 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -25,6 +25,7 @@ use OpenSSL::stackhash qw(generate_stack_macros generate_const_stack_macros); # endif # include +# include # include # include # include @@ -258,28 +259,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -410,6 +414,17 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) /* * Option "collections." @@ -554,6 +569,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -945,6 +962,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -997,6 +1015,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1006,6 +1025,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1016,10 +1036,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1311,6 +1333,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 @@ -1416,6 +1439,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ @@ -1480,6 +1505,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1714,6 +1740,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1771,6 +1800,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1863,6 +1894,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1917,6 +1950,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2225,6 +2259,105 @@ size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2524,6 +2657,36 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl3.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl3.h index 49bd51f2..4f076c6c 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl3.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ssl3.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -239,6 +239,13 @@ extern "C" { # define SSL3_RT_HEADER 0x100 # define SSL3_RT_INNER_CONTENT_TYPE 0x101 +/* Pseudo content types for QUIC */ +# define SSL3_RT_QUIC_DATAGRAM 0x200 +# define SSL3_RT_QUIC_PACKET 0x201 +# define SSL3_RT_QUIC_FRAME_FULL 0x202 +# define SSL3_RT_QUIC_FRAME_HEADER 0x203 +# define SSL3_RT_QUIC_FRAME_PADDING 0x204 + # define SSL3_AL_WARNING 1 # define SSL3_AL_FATAL 2 @@ -300,6 +307,8 @@ extern "C" { /* Set if extended master secret extension required on renegotiation */ # define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 +/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */ + # define SSL3_MT_HELLO_REQUEST 0 # define SSL3_MT_CLIENT_HELLO 1 # define SSL3_MT_SERVER_HELLO 2 @@ -317,6 +326,7 @@ extern "C" { # define SSL3_MT_CERTIFICATE_STATUS 22 # define SSL3_MT_SUPPLEMENTAL_DATA 23 # define SSL3_MT_KEY_UPDATE 24 +# define SSL3_MT_COMPRESSED_CERTIFICATE 25 # ifndef OPENSSL_NO_NEXTPROTONEG # define SSL3_MT_NEXT_PROTO 67 # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sslerr.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sslerr.h index f1882558..e1eb9a56 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sslerr.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/sslerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,8 +25,10 @@ # define SSL_R_APP_DATA_IN_HANDSHAKE 100 # define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 # define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CERTIFICATE 348 # define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 # define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_COMPRESSION_ALGORITHM 326 # define SSL_R_BAD_DATA 390 # define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 # define SSL_R_BAD_DECOMPRESSION 107 @@ -82,6 +84,7 @@ # define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 # define SSL_R_COMPRESSION_LIBRARY_ERROR 142 # define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_CONN_USE_ONLY 356 # define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 # define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 # define SSL_R_COOKIE_MISMATCH 308 @@ -110,6 +113,7 @@ # define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 # define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 # define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_RAW_PUBLIC_KEY 349 # define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 # define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 # define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 @@ -119,6 +123,7 @@ # define SSL_R_EXTENSION_NOT_RECEIVED 279 # define SSL_R_EXTRA_DATA_IN_MESSAGE 153 # define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_GET_PARAMETER 316 # define SSL_R_FAILED_TO_INIT_ASYNC 405 # define SSL_R_FRAGMENTED_CLIENT_HELLO 401 # define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 @@ -144,6 +149,8 @@ # define SSL_R_INVALID_KEY_UPDATE_TYPE 120 # define SSL_R_INVALID_MAX_EARLY_DATA 174 # define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_RAW_PUBLIC_KEY 350 +# define SSL_R_INVALID_RECORD 317 # define SSL_R_INVALID_SEQUENCE_NUMBER 402 # define SSL_R_INVALID_SERVERINFO_DATA 388 # define SSL_R_INVALID_SESSION_ID 999 @@ -156,6 +163,7 @@ # define SSL_R_LENGTH_TOO_SHORT 160 # define SSL_R_LIBRARY_BUG 274 # define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED 395 # define SSL_R_MISSING_DSA_SIGNING_CERT 165 # define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 # define SSL_R_MISSING_FATAL 256 @@ -196,9 +204,11 @@ # define SSL_R_NO_SHARED_GROUPS 410 # define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 # define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_STREAM 355 # define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 # define SSL_R_NO_SUITABLE_GROUPS 295 # define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_RECORD_LAYER 322 # define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 # define SSL_R_NO_VALID_SCTS 216 # define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 @@ -221,10 +231,16 @@ # define SSL_R_PSK_IDENTITY_NOT_FOUND 223 # define SSL_R_PSK_NO_CLIENT_CB 224 # define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_QUIC_HANDSHAKE_LAYER_ERROR 393 +# define SSL_R_QUIC_NETWORK_ERROR 387 +# define SSL_R_QUIC_PROTOCOL_ERROR 382 # define SSL_R_READ_BIO_NOT_SET 211 # define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORDS_NOT_RELEASED 321 +# define SSL_R_RECORD_LAYER_FAILURE 313 # define SSL_R_RECORD_LENGTH_MISMATCH 213 # define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_REMOTE_PEER_ADDRESS_NOT_SET 346 # define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 # define SSL_R_RENEGOTIATION_ENCODING_ERR 336 # define SSL_R_RENEGOTIATION_MISMATCH 337 @@ -234,6 +250,7 @@ # define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 # define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 # define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SEQUENCE_CTR_WRAPPED 327 # define SSL_R_SERVERHELLO_TLSEXT 275 # define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 # define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 @@ -273,6 +290,11 @@ # define SSL_R_SSL_SESSION_ID_TOO_LONG 408 # define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 # define SSL_R_STILL_IN_INIT 121 +# define SSL_R_STREAM_COUNT_LIMITED 411 +# define SSL_R_STREAM_FINISHED 365 +# define SSL_R_STREAM_RECV_ONLY 366 +# define SSL_R_STREAM_RESET 375 +# define SSL_R_STREAM_SEND_ONLY 379 # define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 # define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 # define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 @@ -316,6 +338,7 @@ # define SSL_R_UNKNOWN_COMMAND 139 # define SSL_R_UNKNOWN_DIGEST 368 # define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_MANDATORY_PARAMETER 323 # define SSL_R_UNKNOWN_PKEY_TYPE 251 # define SSL_R_UNKNOWN_PROTOCOL 252 # define SSL_R_UNKNOWN_SSL_VERSION 254 @@ -333,6 +356,7 @@ # define SSL_R_WRONG_CERTIFICATE_TYPE 383 # define SSL_R_WRONG_CIPHER_RETURNED 261 # define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_RPK_TYPE 351 # define SSL_R_WRONG_SIGNATURE_LENGTH 264 # define SSL_R_WRONG_SIGNATURE_SIZE 265 # define SSL_R_WRONG_SIGNATURE_TYPE 370 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/store.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/store.h index 3c1445e0..e6ea3cf8 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/store.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/store.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -98,6 +98,14 @@ OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, */ OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); +/* + * Deletes the object in the store by URI. + * Returns 1 on success, 0 otherwise. + */ +int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[]); + /* * Check if end of data (end of file) is reached * Returns 1 on end, 0 otherwise. @@ -345,7 +353,7 @@ int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, OSSL_DEPRECATEDIN_3_0 const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); OSSL_DEPRECATEDIN_3_0 -const char * OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); OSSL_DEPRECATEDIN_3_0 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/thread.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/thread.h new file mode 100644 index 00000000..3926ce54 --- /dev/null +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/thread.h @@ -0,0 +1,31 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_THREAD_H +# define OPENSSL_THREAD_H + +# define OSSL_THREAD_SUPPORT_FLAG_THREAD_POOL (1U<<0) +# define OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN (1U<<1) + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +uint32_t OSSL_get_thread_support_flags(void); +int OSSL_set_max_threads(OSSL_LIB_CTX *ctx, uint64_t max_threads); +uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx); + +# ifdef __cplusplus +} +# endif + +#endif /* OPENSSL_THREAD_H */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/tls1.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/tls1.h index 793155e1..7e3d1a72 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/tls1.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/tls1.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -28,7 +28,7 @@ extern "C" { /* Default security level if not overridden at config time */ # ifndef OPENSSL_TLS_SECURITY_LEVEL -# define OPENSSL_TLS_SECURITY_LEVEL 1 +# define OPENSSL_TLS_SECURITY_LEVEL 2 # endif /* TLS*_VERSION constants are defined in prov_ssl.h */ @@ -122,6 +122,14 @@ extern "C" { */ # define TLSEXT_TYPE_signed_certificate_timestamp 18 +/* + * Extension type for Raw Public Keys + * https://tools.ietf.org/html/rfc7250 + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + */ +# define TLSEXT_TYPE_client_cert_type 19 +# define TLSEXT_TYPE_server_cert_type 20 + /* * ExtensionType value for TLS padding extension. * http://tools.ietf.org/html/draft-agl-tls-padding @@ -134,6 +142,9 @@ extern "C" { /* ExtensionType value from RFC7627 */ # define TLSEXT_TYPE_extended_master_secret 23 +/* ExtensionType value from RFC8879 */ +# define TLSEXT_TYPE_compress_certificate 27 + /* ExtensionType value from RFC4507 */ # define TLSEXT_TYPE_session_ticket 35 @@ -147,6 +158,7 @@ extern "C" { # define TLSEXT_TYPE_post_handshake_auth 49 # define TLSEXT_TYPE_signature_algorithms_cert 50 # define TLSEXT_TYPE_key_share 51 +# define TLSEXT_TYPE_quic_transport_parameters 57 /* Temporary extension type */ # define TLSEXT_TYPE_renegotiate 0xff01 @@ -195,6 +207,15 @@ extern "C" { # define TLSEXT_hash_num 10 +/* Possible compression values from RFC8879 */ +/* Not defined in RFC8879, but used internally for no-compression */ +# define TLSEXT_comp_cert_none 0 +# define TLSEXT_comp_cert_zlib 1 +# define TLSEXT_comp_cert_brotli 2 +# define TLSEXT_comp_cert_zstd 3 +/* one more than the number of defined values - used as size of 0-terminated array */ +# define TLSEXT_comp_cert_limit 4 + /* Flag set for unrecognised algorithms */ # define TLSEXT_nid_unknown 0x1000000 @@ -211,6 +232,15 @@ extern "C" { # define TLSEXT_max_fragment_length_2048 3 # define TLSEXT_max_fragment_length_4096 4 +/* + * TLS Certificate Type (for RFC7250) + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 + */ +# define TLSEXT_cert_type_x509 0 +# define TLSEXT_cert_type_pgp 1 /* recognized, but not supported */ +# define TLSEXT_cert_type_rpk 2 +# define TLSEXT_cert_type_1609dot2 3 /* recognized, but not supported */ + int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/trace.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/trace.h index 97e13857..9a5b56ea 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/trace.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/trace.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -305,6 +305,14 @@ void OSSL_trace_end(int category, BIO *channel); # define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) +#define OSSL_TRACE_STRING_MAX 80 +int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); +#define OSSL_TRACE_STRING(category, text, full, data, len) \ + OSSL_TRACE_BEGIN(category) { \ + OSSL_trace_string(trc_out, text, full, data, len); \ + } OSSL_TRACE_END(category) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ts.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ts.h index 8ff67332..b09b646d 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ts.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/ts.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/types.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/types.h index 5f9d8c23..c2802868 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/types.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/types.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h index 483cb9d5..ac132633 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -606,6 +606,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -654,6 +656,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -887,7 +891,7 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); @@ -953,13 +957,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1265,6 +1270,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h.in index d4df2adc..72103913 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -412,6 +412,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -460,6 +462,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -693,7 +697,7 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); @@ -759,13 +763,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1071,6 +1076,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h index 29b0e147..d3dfff8c 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,71 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +566,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +583,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +606,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +691,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +736,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +768,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +778,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h.in index 80f18bd7..7a478d11 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509_vfy.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -314,6 +314,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -394,71 +395,71 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -468,11 +469,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -482,6 +486,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -503,7 +509,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -588,8 +594,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -633,23 +639,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -667,6 +671,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -676,6 +681,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509err.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509err.h index 34ead4b8..71b557a3 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509err.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h index 75016354..e64da7e0 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h @@ -742,9 +742,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h.in b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h.in index e33c9d30..56968037 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h.in +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3.h.in @@ -478,9 +478,10 @@ typedef struct x509_purpose_st { # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3err.h b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3err.h index 1ae3a562..deede279 100644 --- a/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3err.h +++ b/deps/openssl/ios/ios64-xcrun/usr/local/include/openssl/x509v3err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -23,6 +23,8 @@ */ # define X509V3_R_BAD_IP_ADDRESS 118 # define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BAD_OPTION 170 +# define X509V3_R_BAD_VALUE 171 # define X509V3_R_BN_DEC2BN_ERROR 100 # define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 # define X509V3_R_DIRNAME_ERROR 149 @@ -86,6 +88,7 @@ # define X509V3_R_UNKNOWN_EXTENSION 129 # define X509V3_R_UNKNOWN_EXTENSION_NAME 130 # define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNKNOWN_VALUE 172 # define X509V3_R_UNSUPPORTED_OPTION 117 # define X509V3_R_UNSUPPORTED_TYPE 167 # define X509V3_R_USER_TOO_LONG 132 diff --git a/deps/openssl/ios/ios64-xcrun/usr/local/lib/libcrypto.a b/deps/openssl/ios/ios64-xcrun/usr/local/lib/libcrypto.a index 62e92101db03a950ea15edf3d927545db91a6bf3..e8273402cbfb6bcd8c16aeb236ab54aa88d74515 100644 GIT binary patch delta 2169018 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 z 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 ~lalf@VT*={)&!fX$M%yu`3Uh@~BD#8Y9 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

Tp70DPWe2!nY4ijp?0c?B#fAI3 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 qCs!ED8A}<97y-EF;OAkbNX0O&XB7 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

|HoYt6{}0s|#%{+(rU-cg&cl>0FA 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.CN~K&l_H~VSA)a%2Bhx1D5=n!ABLhh1BRxp<8_A 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%0AvD=E2fk%Gkl2xqakyVs8aHb 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
dQc?F9fMRAEbI0i1z;HP>+kR&A>DD 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

BOQ-YyTA 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℞t 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%0Db`#)HcrrCc>vNlfm%&n8|GT7gF^G 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 z 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 z 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ℜRE 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̳s~7trx>&AIyQz=$Ht0v8>qQ}%iuqXj!}Q5 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

3d^+dcI}nNS+_Yf9d&m+Fbm}1>Sypr=DTj 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 a^1~~xNPoE8f4F?%LxDnkDg}H;_5T5t-Y>rZ literal 972448 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

+q;xlAce<@%)7DioDRDV--5NGE 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

$Sch$??Ju^&#|E&$oZx`$EM+Z7w_HDb~I#O z&OJwCjJmkBiupc+Je$w=O`|hQls=vRq`pD<8GX*MsSQ4#!yDn^JQ&6(joxn|eX%M! zFLNCgb6(~;dK7&)7yf~DnH@hB`#p39^YhU7e!Pvh+zlDiS8KO_FGF`l!2 z=vR8*z6ayQRFsqIKGsh0zf}@;qJ2r$Xg!?Hq0+jbz#%gyD2@B^_C1ZiICEwnjeSO} z)d#V*MeBYvN7r*?c+pOfPfC;K8k7dfgw%af4y9YJ|51GXUAf**VM#|3q(A$8n8U8M z|JaZdgGTKhS>sHB>^z6>WIR6`eO}s2bPk4e>mbY-%`%dx?3`DWjaT`DXq{?vN?mWI zpO0=eg~wY8wlTr-Odbo6epK2=ABhfIjCX~N{$!LBeWttzXHf!wBRv-1Ua?~#Y~lip z@yjYzBmx9Bp4G>Z@^WfpMPNVn5n~zBLwU3%sWt!1}cD{hQct?sa0_�GNw3Ruo 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

TGUSFwg{qij@fCzxxvpX1W-arL_tmybH}WdEwh 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®3<7yf03#O{B9|{@Ku(I4wf=4-g0U6BqM|lX=wra}N+l zPI*3kfVJy`@X!~hqR(G^!P@v-nsDTOC*gM|ZGmTRWz3d(N%7Z}#!VY;PC+x1us`*y z$kB1nC&FBRxwrHmuse{=H}a#C#why>hD2v%Uv13i8K0hzF=+gYVQX3$G_R6B$CF8_azloO|R$aP1e1LsJ(>tFdZ?90h zjJ#c*oVVj2^cI{&r?TsG+u9wMdJCRrexYau=Lc3qkN!F1jYSz|?qUM6tIp7wEcqFc z@$K-Rm`0BJmV_>yyh%OtCFzOsWH6>I)2hH%@c*(uY&pY8}9)o(d zB(rV7(+W3d($q$x@si=!?-?1?U2BB1#8`_L^Q}jC9{o9WDtXw`Uk7QaeEAe-j3$no zRJy1*mXKfh@b#hblKZ3!ckJa&@=uI)fejiTrY|?1^?>8~t-g3R^0D{wXkKAxSLL(w zyU*TjCB`x-yEPVEeuGu;-nCj|Xl)$C+Di2Yvj$k*YE!l{cI@dWY#BM6{vzuOhEm=? z1#SL>LMKk@kt1(KR#KdFFz1$!yBNAqpCVQG+P@r0I;`uG{|&VHmOqUgvkU2CMb7UdZRBQT@2WUE*3oM@=`5wcZzTI0rfsTr zv%=HBI6rfY-I2oZuB^|NHH_n2)U3~DH*h9X(p+on|JUp2Kyi_uVa}=Z+E}U1FAWjj z( zGcsQC)ikvG+7h(>w#ygO(AS?x&?`NJCs6)6wDGsgUkP>l^IEVC68&j!K^1u}zrw6F z8t=}LXny2Pbg%gl%863{T9~GPM3>$?syk1T=gyO~p6D&;@YOYQ+`2|>n#wft7ye_i z{AVecn?hleQE47ilXzKOj1@AuBp_Cv7xn-rqT%bvKNCul+&I|C(^~ z*1w6-*D0e-TgW$!=MAMj!~(co^dsJXm3eT-ANVX3J-pW7W&->kryVp7p7J{q8g_mz zYr5aN(dwQN8usEIzIkI-A;!Lx4>}ZHjqkq7I6ifS#^m)~;qJPTeobijd96S9>tKOz z9ol)d-Oxc3s5YVW;Iz*vcV8f^MQ;0i9AS9_J`1VqAEbT$;%(M}U%hG_(3+`Va<*FM zSYKVvxq2!aB}be+3d$ev4&&@gcvD9?^eQ_-(4BMpyHVx?l&&>y{mL&*dNpy#dL6au*wYa3HD^vL=U{!O z#xqP?K>AV`!nw)g-i}@vliKH_jk9hk1YJF2MAVT^Je;Kd5-op8V+Vz26X7mYyN3Ea zjJwy<(0BUj)dptV@Ox=!^Zq?v^361Mp>sZe#V0Rb@^xtaW!o4x9qi+~x3*PbNbVz> zb*a72sn3&1`+5L+ABg_1A|B}PJd?%zYy#-g3`;! z&n!T`BIJAkdGAN=`Sc6s9UvU0UqC*4kAA@c^87CbGLK3bl`8&1A0+$?5r1>2C*DP0 zPm>;_iwnD_(e4^foDa{?Jm2tx%V&A?n%~r%=kSAXxZk3S8Rw)Amdc;J4?TCuV@z77 z;q|XyabcITzn*S2-Ce1gFwz|Fe${=pM_$nm6vO}TsEAT%TeMYR%i_MhNj4{0b2Kvk< zP9KM6oXT0uBcRF881`Z_W!pIQcZhq@EOBUtpFd0amrBmI-;pPgOLV>ww18 zB5CqUeRi@g!a0nM!uwx;lUjEbLwxj65ZAvp?2>0nMe11%tvA)pNjA7$<$~YdBkW+2N zIh^a?OIvFsX^TBKPTKOy-R%P}V$7(Lh(0V*ON1OThK7O|* z^V1e98!t_lhX*?A zGfi4gr2q1P162pL$RB?mD9;|)-9$O#m9g=^qmSgx9}}n6Klb+1%}r@^v+tuoUFOEq zkTmhyNq%?2O!@BQ>D$=HraVm?Dn5p0WgH#(l~5rPigKI=KX&2aq9A>ZCHXfeMnh&Tbg>K zew1+^BmNrHZf6bHBlxBKqOvlBvGh#J-_AEwwhlS?OX6lAc9LD?#np_n#E2WlJzF9} z7_TY3#@UbCaZ|Lr4Zj^a#UpJleG9R!z;n9}x1Fz=aYoHAyh}cnUHo8g%Q@mieK+~3 z{OI*BFY#S{BCkFO=NkE64pVl~j`7;MYBS7F6BqS2*OwqfN`2N3Na!=9dX#;yYWqnp z{*v-b#V1_d;a9}y?s}zPr3J6-%}XOgp)0rOE0lk(jhFl<{wU6vGcNfGzk8q4m_z?H zpWgg$q~n@hqfciX)f!I5629eMyL-Ub*M1N^JL3(Y=E7pyQ+TyCeaqQFyUIUT*zNWG zGza|3Z6-|O*&2@9<*fB})@a|J_+I{-XYJ?Rwo3zTmmz&^mm%lFj4`CrRh#Qx;r05& zo{lWStFk;D&u7Wwsd(m1NW@htp277G=+o)r45jXC4-a{>JXPET5{aMyl zd@j_znQ`$a(NSU@$57JZkc02iUz0o?VXM1i0BePykE!2AdF$M})K}h`btF;vG{}BX z>i$OF^lP1Ij}fw=IGn~b49nM!YM6YER9lO|2KxjK#Hy5+$D z>n<-%AHdC%uivrDufGob4C=3!y_LAE- zAAELPLPmul{;Sks$s3=bQ&==c;^*_M%O{ubDudId+f-w~`Lw@M=`ZwH!q3$CJTXq| zw9Pg~*|U`I?9~)Mr=FtzSG;*-^h%{yOzL@!&7B{OTc0cr!EMW-T(vO)gkY`&Iprl<_?^eSE7A)7MwEu6{R*EE&uS%hEh=v4Dq6@OML40S)fIOFJ(ubO($)7JvxK0jX)Vq^`k#!G zIcsr#LOtT$SM{#jP7GT+lFGR_XBC`v+KC$1-_fs}i!-j{_4$M22pR`rk9~_5Ct>y} zzPm!>mBS96BMo_Ttc*t#cxkTdChpE5F7n5Px@Uhoxvt4_+gw{nPYUy!=goSuIOvr< z^3#czt1eGx%w_!Y8;0+a|5q_Dt@^8Lkad*r46Rs=E1b2XW=;J(`r^N&jr{MlKjgmk ze-kd;4b%LzKOa0`($X|1A0+nW-%A`yu9+&YDF;=aiO(d=snSX4zWS2UY3w@ZB=V>D zybj+m^_f>T4o~AQG~c*O)wYP>CRLqKl%`H-dp#jTuuh;nqYOws4<`0ktI5xkrz<~u z?KIAraQejxe?ba2=9|&sv-GP(7v$^3Yby7_@M!P5&NIoSY}A<|<&+(x|H7PqB|ct# zf*Q>|{qX(e?R45uCSNtto>v<2%CJ;rejD*d zU+buICRrZqMM9A^s&5^+-7zwy6UnDr12?i5RQt1`+jTO0A;#eSs*@uFQ$`>Dmtd$jWkITRhT-zZNj8^*}|(SqtT)0(k| zS><5RPJZ#1oHxFe9M^LwBfj9I_YiZrA?8HG%#Eg6>k&SvHoMBq;Y|-Z56;gUi8ATJ;Pf20`8u<%DTQRW5oG) zS^s$tW$Y;aIPi$D*`LIpCxv%9R#pJe9mDoiFG67|P$Vu6+|_ zXsYn%eciZMKJ6qwzmgj-NjE;7w?COS%-%85vQrLO_~Yf*;CV*g8ogY~aHV6XKBf<< zIy2ktgR0I{f3k!0rSqPsa9b9Rh#q}$Bz@G-ptX7Qv2`xwgP$$zUW?sY>>jKSb+2W; zP`A=iP^OeR_y*^|p!);#(Y-#-gKi(k0ySq*KPT#x5w!Q5 zc8k8LJrF^jP@%D79n<+J_jji9qwPSl?&h%9{M%{byYpZ&?JL9MCErLx8~V$5Nh5Z_ z`rR8>))=uh%k*V+ewR1Kq&Nv%^-2A&C~GVe<4pBV-1^6vXcr}oGre-!$mxtjzrtEw z(qOP2k$dT*ob(sFpYg>3jF~*ld@Xkon;K|4A^zft?x8^Vzn-a`(pRl8+G^dq&cPGv@>#h9OM$V|OHrtOER%a(Nc zvHqBkUU}Ddet`*Z|MsQVuI+SnAMMk9f7(=f&-2TOpJULI)(WMft@uH*d|~E1PeYrk z92>`2+IzJBly38#y&{o=53&wqBI`iLPqq$hXB{{Fi_&q7k!7IEY}Pw!-QytEJ8IqI zpsS-ZA7kBPgmk63fZ2?bwL$Nt1I;CcA2jlm-#?(6_G8QDg=WlpD70hJoG}q9PCvgC zT9^o*`mJM_V@(%V`vSCQee1gXY11n^wR0Fy-~L^w)olUccgu>1fW? z^nYTS7kR=u;Llqg|6qSsekmWumM_#j&r{T|t)h&}=X{=a%GP)NY#?M55HC0&J9!=;kkA1me^ylSaqmwJUuP8~lcgA!{U+LUC z=k(pmnQzO6FFyFWc*%m#KA+9rliG&e@seEHMBe_tV4qs)QR6(3Q{?@SS!dGrv?)`{ zNkgiG6*l!{D>rVc@7QJgfgPAKe{Z5T} ze~Wt2n-5igLF2ui+35qgews0j{(0HZXdI=#U2jI1xyek{5e}eF#9HWQ*ylxCMeT_Q z?QQBr`h%=(W(|z?U!>FJ3+Qrs=!KD^2V~cBj+Zkg-nl|y@r8piK`&2Q+H3no6Nl1c z2WyiWNORJ&bQs2-_;lJg(!m#LV>eLestj&oy|QQ-7kBcB#vWug`}s}!SDdhRi8{%c z#p5CRqQ7)xVjnks&~Ow#7>~=uFDGuKYp1`OuzwEwbBrT;V~FCj4jR*Dcj!3Z32_f25nYW9fK&$@m@1O{_QY_)#IGl()@wHXZIM{;~$wd3$M6lLrb2Z9j<(lsyzGP z&(wCcayD@`zz427{7KTew@2PfhiA#Z$#qBnajbhnX2Nc z@HNpt3HC#pDXTIVZ^{VJ`{~N9(eEhk{NGehS=P|dlh$_LLqmV$y!Gpk`+mvvhyD9A zYoBHP=Bk@+eRR@qZk+s^8Nbn!<-AkB?qhU`=b7CncmMhB&+k6`Gk&CbPGa@K&pvH^ zdTItwc1Fg%^NMrqyuEkG*#B9qPb;hueNQI8uI@9X`Y~#VwPf&;>z3TMB+XN(?+dNS z^&`jLJ!^iN=P|y2rgG5LRyfnjz9IM4?6l8SVaF=V8a66#{GA0e@0(kc_IaYd=nGiB zSX;Si^ST=6VlOU@y3^cO<$}4|W`*UyvB$l6D0oj-3X*T)Qg~NG1!>&t znATQ4RaUum1-DhLb{)GGKBip6wQ+Ohrn)4dxFCUUJz_k^KVTD%k(M zEOCdL@x8L9f~(P7N?%AF$@_WXCva{wGZ*+dA**mM2VA{@8wg|T0?yZ0Zgno&s@ssH z5fjhoG(fI<1~;toUqjVDg-yA;|3!GZ_|FSURZWbG0XJ89DZ!1*icMvnuXVLgrHs!_ zYb(oYHmxPmRaUH9UR`NbtzS{Sd1d9DRqN|2Yu8s)-&s?kSiU2c6c{<%R9n;U+sas_ zRb#ETYBn#o<`wm`u3RC4K!gS*=x<%SslqB*T$sXPYIfiH(3vF$Ti+*6pZLZN>XMEw3vO7zQ7w3`>#E$wf?bCbZYo*evHYq5r3)pPkhjEp4NSjYp(`xD*ii*jr+-H9u@Qp z-?4{{y?c*uKl?+E8v9eYPbFWx)Yy+o!+-B5jlDJxrIPRD>Geo{0p$p3|W)T zRan+>%bIi&+yu6Rb1bX)xIw!W#C`EGgZ2@y7P>gN0jvS5!Ij3oxZI#!3eu;aG!Oh6 zFc(|{UO?`n;BoN#IBhk!tOZ=l_x+&!Ycgo>1)t-4BPcnyf|9caEQGGwpdAC{ZlyuH z9F&};#=dxwLA%)47Z(|{=YgV|42o|)D89ECv~xl69c9oS4vK!Tu`iAov@?x;v1QQi zDKm8EK=C~TitlNI_9;+&Pa3pOfZ}@?6n!%&`uzs&CQ$Ty4cdD^(eDHuy?}C813G#! zXvaXgTWQcP2j#8^6nzvF{Vap_3{dn12JOk9=yO2P4+cdaF=%IkqPGm%J)bf3U7(Y$ zK)GuND0e#y+Hp|sV&HS&5|A`MX%_fb z;4Q8>6MPnP$1;P*z~?a^0zVJ#0ly1w1z!c1fXrV{DhB0WkwJSFSj6|s7LX~xuEdx1{MCDU=;rw4B9(D z$rCqdZv&n1gK}32%3U!icSQ#6d7#`y4cfCnxf=!k3Oqx3Mv*(|5cmejn7+d&4$j8i zHiPz7P<-kP+BKl~l!Ed<3d;W(pxhN0v?qgdH_@P-56WE*DEh&m=pzR0Oi=WeLA!_Y zSo9Y`(OocTcY&fiXVC5dMRy!j{2g)aTU`4BQ2tE>@55cbLHibCUz}^u9tDa|1Qfjm zioR!wgZ5=m{$4U@Uj#*e5_}tM2Ay~W<$fn9_YDT^9iZID4cgm4xnBv2ekmyWB?j$M zQ1puo+Qp#guLIu#BcRgnk;hGWd>9n{A%pgQQ1Uc_;@<$;*zYiC$3f9=GiYxG#lIAM z6PyA50L%eZ-VX*vA2De6P~Q%uJ~;#a4*O%^X0Q>Q1>H`Ab^|DPI}F-!Q2tbdl4~U> z`f`KzQc(0u4BDlj=%b+MXMmzFFlbK(ML*G?oezqB6nGZ2Ts-xdad*<7eFBubc7yhD zQ0``dd%yzl-@xIZ^q2|C{~p>Q^8d0y`w}QV7Y*7MK=C;ZivA=h`V$82c2M-k4ce`s z=#PM>z&+p@unxQzx*CIaH7Iv6gZ4^L?v@z)VlFWhy}iiT7Z)3}i$Kxkf(l0jlw4X7 zCjLE(jl0XB_+K(;Uj&_SfSaH{35x!NLAxDv!eP*E1x0_z*cUe&wD%kP;wFRkUQl!m z;3hB*itjdq_Eu1Q>kQg8py*4%MV7T+cn|iAT(c0fJ<Vv=5u5?tPJ?y>D7khRwBukcbhE&pfH~k#!HWp_UtkOP zF}NRm0o)6|1~!6qU>uY`TS56#XV9(zG&fiJ`aK7vmX?n zCWH1~P<-|nw0DEzQv<3UxCoS-IiTchrhP6xP2hCg?KNoc0mWyxLAwzYpKYM%>p;=h z7__TF(Z>whD?!oE1AhVbJY-o%z)PU?aR_`1Yyg!$>p=0X2E{jK&|V3OZ@EExDJZ_B z;4ZKT{4N*;70;8wjo>Ko*I*7PzJo#WjTp2uLGiT=+CB7R#P>LO9^48_u5wWBmw?lt zFEwZ{0_DEgpj`wy;RUHeCKZ5Bfae~xG^so31o%^MKln|s1{D9Lp!k=9Q{lJBpj`}# zf003Z9w`3TfufIqcVVAt(6&I)_bhbKz6^@~A}D`OgK~Egl)DoK?RHS^jvKUFLAh%& z_Qi({+J}sNakD{tKPbAr;NO8e!1us9uo|oe#W!ZqE(QOS@3X)HzRxgd=YaKm9}ISY zCl*-DMp%s)tU~SbGCJ3@V(>pu)M|pxp#Yp1lU` zJ)q>@Y3z#|4B9)4eR15Ny$uvyjj=DTHfYC;eep_zb~z|I#_^o?NIob%j57Ac!wuSl z!E=1?d4Mq&@FMsPunYV;*bM#>tOn(NB`CSe4cbdU>8BV}yv_g>-pQcCJJFz>56ayw z2JKu>@|~J*+_i#ocLbaQU5i2cFerD24BE}0+%xiMmxA)Y2o#?vC_b|c+A~1$ zDKKbH2F2&nJQJ=9pzOO0+NVJAIRQ@Qd%HpVxUny8HE16L#is@Q2s{KzPy3C1ag#xN zH>mVc2P%Ec03AJn;y=-#oew&CGHB<5;vWG;Z-Juknd_i^85I2`gZ4#G^j)CjIRpMT zxCE5@MWEal8?=kS49xQk+EGyMuLIYE7I?e-o8zE;5mflPjJf!n`@IDe|3jeoHygC~ zgBh5c4BC4^@ozNt#XAk!4aUBBhe10IiZ0jK7mqS%4>$J3IR@?PK+$RN;P1iHblN0$ zJ1Du28?+CDlDpaczTf>`2Oj5pIVky;fRew|puGr`{KW?CBG8cwl)J&8++~7tr%oei z_s|KFyUPacOQ77H03}C@i_ONqc)vk=6exZS|l@eYG_928w0 zxD8whDx6D=een{5b}{%g-zS5|z#Q<8Ky|LZ0G__jvYr9=gOYDAD1Y}Dw0DD&uhF2r z6O_MOLB+>PQ0|t33fB^Yb}1-#iwxSupxhOJqMrzgKHs2y3n=Y(sz9pnVAxeFrG|)1VVC2JMre_@6Lnw}YZTX6%cP7_?iAeeq#~_90MoO<)|{ z34Rt_1a^Zn!1uwyp!|y%v@=2Zr_L8>_s|&-pEIE3I|YjVq(S=xDEfAT_Hj`3he6Rd zgQDMW&~5@nzt^C>2NZoH*aJpExtjq_fUdxxJsFg{i3aU_Q0}e+MIQmjW1nfzRwqXE zJv7!q`!Xo{3*dLb6JR@d3|tNFcX6kSbuN~IRoEB1IM2md;B$O00ABzng0FzLfL{X# zgGy(Y?lJOR0F@594BF>F$=6}fJ_Aa=lc3~l26uyTP<&#b!dVWA&r*Z-5>R|f4cd!9 z@tFmRz5tXSCmXaUf}+niXx{>gemE$9FVNX|7d#1m32X(w0v-mx3^swE2X}(cf!n|r z!E$gXxCq<<7K3-%gCZ>bzVAkJC7pKgU3&^CJfB7Et~iHfSFL<$gCP`kkQUYA|T;07V}+Xm0~WKLb>{ zE-+|MHul964chsj=o+ROzHv};Y%^$Y1;w|{pj`usJ_bGtE&-LExTslZF9JnhY|t(O zMSp}wzT`d(ivJ;lb~7mY{RZtO(BTiNTrYR+m%8@zK=GLc-iEsw2JHf4Up(2MJrNY2 zT(AZl42qvR8>+8+XpDpQ8BqLAf#P@4pnU?AT7% z(f8bC`uknrCd{WneLn?CU&q|D7qa6?KoHq z-4gK6!D8?=R9a+k**t@jW`Xkm7Ep4H0>yW@K|2Q&-|Gz8gTY$pF4MRd{Y6mp7Yy26 zpy@OL#FM^`KV9@RYMSljAyr*3IldgRo zDEXtH_{{*tufU)^85F;X2JL)M{H_B<9|1+5Y0y@oE&3h`XVAV3ivAoZ`ZJ*DPaCvP zfucWY&^`f*{s<`g!=UI78MK>0(eF2CH-Vzx1O6D?0iFbxf@8tS;2Yq%iI(+quo)EJ zCQy9$8npL-;=9|R-3W?r1Nb_)6uj#Hu=Y0aQB`;T|Gkp{lYj~s9z`=js0o7QAw0x7 zWfFoLFe=7qX%#1d1SSN?13^Kt43g>~*>19;Whwm`lx+hIEp20)w5bN=*MGEhH!9m@ zyZqLGw2eY{L1|5FY<}PTA_dMKlz85~t1|@zfDDkH$ z^!q@GKSiN`A}I0WL5Y7FVSWZ&0ZRNFP~vAR^antRf15)8B2ePb1`mO~2>GkXzYUy* z{TO&7SPM#e5m3^rR_G6dlHPWO{;i;-R}Kn2*`UO`4U~9`6#COai8ouJepoDK$=;t!175tF}7XT%_+Z6g2 zfs#L$x&{5SK}qilgNuZ_q|kp6lyF@N{pUdm*A7a$ZJ>m2Rp@U9C47@Y|1nU)SAoYN zwOrw<*`UOmsnDMaO1xWc1GdHumpyVTiqQvV(c!K^*pvaRBQ0jdHDEvhakCksO z=p%fNLVq?W@dFC|w}F!HA~2D3rhy6IXs{6XUK;-zunSxTo&pQNL!gYe2f)=}1S|rJ zKq>Eopvcvg3jO(@b^>2PNG`@Mquw@JC=3*aUV{3ERO-U@3S8+y$NjC7(7>@@WDmlkPEv{zg#p zX;A1t1WG&* zQxy6qf)YLnYysoJpGwnExaty>eI4%2prm&Ul=K=E`Wrw=?~p=&Jt*mgKuM=a;i?s& z@F!hkDk$-$DfCYSci}%;`y1N7mr5s`zZ(>Oo(F}FGvGMlpH}EU1xk7y3jHTRp`#g` z1lEEQe=8{Q%fa!4-=NSR0wsQtLVp1$@pD0;D*#G;r-DBKy&5mk*do~5!6(2*P};)* z@DZ>Y+y-vYm=A8no&!D$W`oax>EPpFD)=Jk1$TqpG~SKiMNsJLQs_Seehv3_@W)^T zycYjzh5j%o;kPUFZv~}18$fA4A%*@T<)2%i(ElJP;Z}eX2$!qSpQHS9vlaRSpoB{W zp9X!P$dif6KQ~FCe-tQuzd|PyzF!1|?_CQ0=Ru*fQ=$J1DCyRM5p~UWNWzP{LJf_po-a0)?Ie@Mqu(@JHZm@b5q$D0Gen zh0ZH<+Y*5mf0!lhb;8@~~R_GrEN;+PJ{&-N*xkM+Cc&9;$*8xhrlM4Oqpu{_& z(BB41ycOWDz;umCpvYC}bP~UpMhE)4L5Y7wq5l#n@w>n#Fak>c<)Gvr0>==(NTI&~ zl=u%S^sfXZ{zUK^+>;dgM=Sr_Q40NDP{Q@XObOSm(0>J#^e!p%Uj!vwr}ED|qtJg^ z`RATe=*DL?r0}B27KnYi){Bt7;{ng4p zH>}XV9h7iY;A>zGDCNmk=nsHWp4$}q7l9IfCio)QHCFMr1Kf4|BwP(>GCwQ_zmL5Lly;D@mj&rU?bQ7)@%P-unBtsDB<$KW8iJtzne&6KM(!@JPFbK<+dyIp8$pKHiiCH zu##}cz|-JX@ISx;@H=2WcoCcp3cpf8{&J@&^!q?bZ;C?yL{QQj1^yoFxY{tjg#Sr} z{#r23G&a;IT(uRH_Fe=^`VWHq<*rod&j%&_6$<^iprk(&^pH-f!c|^yCE?-~`p;Zt z$U))_rxmU`1-2m{Iux!t1omO)y9a`+!r=YH->%UAAeb+7DD>Y3-iLjWLjN?7zg(X} zKlh+5dE5aCy(bm=n?Nbw0Z_`f7vwLuR-wNJl<*OS{%TOlR|NilU^e(~;OUWu@d`K* z{7wa@L2>5}xA8}CgSI~ietjXsTr#!fO7|2B>F8p9e3GzK*KG#VN^$=r&sv0h_XV}ZtiMxRDQV<(ZV_!{dq zhBX#w3~2OeG&FXqat?3PSg$dxu|Q)$qfa9sNemz1$<7(!IbhbCBRp*hClW?@niE>Z zOl(aY;fai_8Oig=R?K4~n=l)%Id;tm&!KA?Fi(v>J$i)acn=IP02FncG5uk(89uRDZ!`nofi9oL<@ZiJ_LN@R-H z(=erR3L&SQ!R(lF3YVJeYp*A@>pL(H-Oz9YG~ZB<*`9nd8OoDSU^Yx|oK9ZT4`H5| z-j3Niy-l7!*Zw)4Ki7sCxvA!+5uWf()tHBFYQQ{jQ$1$eO(!s$Z)(Lnb5kegshdt? zcHh*CdFiGrn0r(ArH=5_q}F1dPwm1yliG>dn--oi!gD39I}HkN?zov8Z*Iq|ow;`= zInJz^86S6P=9QV<*t%!+&LX{8S1{XdIdKbl-qMO0`Fzdiq3iS2nC+iGiP`q~6PSBv z@0*Rw?30*#=j@w9{&Q+E+vl9bJT|v!E>~V%+8GSn0s&CcPk~hwFC3St?igyw_e2Ty!AY0^%o*v zAl9v6%&sq7#Ju>$OJ9T&U+ls>z4**x>T2;R%-+S}Kz!W!Kv&>m04@g_FdH+EW%8Wa zkQpBr&Z^FeWMRu{z&wyuk9jhy1M@^yJLZ+FZp>p#nwC(fOByjxEj_)IFiSfy8*e{$ zJJjSva>zC33}#2pDa`ieCzr#uF#FCOLz0NW>44M7cpB`w5`B>MKk946xGzX`MYzQ}#J=Z7&*+~0mb>EGXmd1z(B zN;t5xUd%7of0;V?@;=PQ2aY{}?*k2(ryn?j+3~eMP|Sk;Yran&Wv&WFxFMBInYV1^5;3vpj_X$>^5>B8Jsbf5^H6zwhYdfJOl@?29~ zTTJ@J5zL0-M$G!+LzuN|_pYUNuC2jrTYCbtd2K7^#kH3(&#&#mjI66!M=tBCF&oz% z!#oq}3{h*L)0iD4r%I@ul9QOdCE@j?u)Y=Z*!m{SGwVAs8%vLsQr^-A%u^dqZ=kL> zbYS*w2ydiZ8@hRJ+SI&>keiNSM#^f+$g!*%v$?Dl^H^CE=85w5a(G+bhS^zu9`khh z8O-w)T@|EO5w3*8mHRN;D^Fq`t7@vEyj6{uXR10ePgR}9?Amg13n^?lk6FDnvX!`x zgfW}8He)t!J%)K`Tf;VLZCgEN$F@_L?b}XbMjows6xtrG#%zA9^)YgJtO@hfW2Z4s zKGuO5-d?>OS@2jd&kfrfd9L4n2=nyzGngIQPhswR{J`Vz|M9(;r@wmUtJKks+8xld zBZAqmqY<-y$05v9J5FPs+|hwq8#ecbk>!!FStEF8r`fO*3_oF3KLK{{G<(H<>Iw6- z*iSxTb_gEYWj5>rPwX<=1rJo4_0{0sYIC1p&DYG@uYuKHGb4fxUo#s8>%V3m5|T zEZFd@*(iAOS+hg%#It6*VD)omCpnq~NK2=IMRl$$e&rU}V2p zvmXraH>(A^_L~<4JNKLC1uq>iuN)Bf1Lj4+1K%?1zXk67mbp)`{(1Az^WeVc%>#m0 z>dkH$%P-cOmjr8GG;3c3t6wxDg0+Xty@$YtZ<~$Z20OlOo)YZ+wi*5oc;(w>x7ZuL zV>XJt{yXL&!IR%HI|NUB$7~nu{f-%K0Iz(<>=yf}2J^JoPd1nxf|nZ1D}r4O=0(f> zu-S1K`-#J5yI}WWvsduaVe^V$$9K(B-v!&hYn~KrYBZZ0!Nx}Om|$n4d0y~zqj^TK z=BQbF6s$gKMg$|@Gi$yl_V1gK?}NSHGsA+7-#3p5o<3%tIRZ!}c>YIbmtdsHtZ4$nO=h)V zQ&*w|zq6YOm=!!LnXn#^voxBu8Y`D3u{$L0ya$WP3gpMc??nAJZq+XS0lHk$=6 zzHD9+JpZ!UC3xr+v*8u+z$<3G;OSS)GlCtjn5P6IZDvgy7;ZDG1rN2E4T1;S%zD9& zHuIEVdz*Pu@M4>JN$`A|*(F$i+&pxgqO=`1PaHSfkK@$&s(JoZ@Wg9o`)gq9Yi8SP zOg}jr%>LNb)|1#cE5g3s)y$0}tCjs7@yGsaZGVwP#nsHc7Z)l2M_BZTeWkX)sl(gx zC+PIz*QoISs{PZo{X-Tv68|wBf2vMz**X<|xQ@R@hyRO?|M%Lyl=Y#+f0RXv{Qji< zf1>>-U90?`*XhsG`CY?eMt;MjJe1$QAAAk_ZjxS_&Oe8Byx4!H(_hR!gXJGm@pnsp z_&=oWx9a#g+CFBi@?Wj(>$H8PPVb*}dRw)BmZS$g_I=%KcrWSKYX84ykthC_3RM0V z#g6~SI=y7guQO|u|JB;=)#cxWvxJ|a%m2FO&k5}xX1yr>zt;I}_9}a}4!`|s?BpM2 zb3lG;g+A;D*gTNmT=rcg{wf`Qf-c`-%}?1E7XM#p`#)=b)a&pc=UZLN86Ki`X6cf z_ey=h&oZ6g)4DuQYP;;0i2oU#{!`SI*iCJJooBJ%pzROp{J*2qKRiPDw`u#U+TZT~ zKN7oxzC&V%<}OX|y%ggb^0f6E+|7Ql*zNo5@3Xlg_Ra@Xc|W8*h+Q_9Hu zwB6QkPz$dmeA_$~zJzD7+xi8XseiHG7Eu1@XfI;7^)Gyzx)!^wZ{Q_OU#CuQzE0oP z=P;K3AmMHO6Ls1?aj8oG%euU_ev2#AJ;D2bzjfJ z-|7l~6a01h-wS`8_H>thiOb#szntN{@Y89}rCmDhe2j2_J35!{4nIHGkw`lcG@>1Kb-c(uK4fK9-RI!yXcjD zWvBlxSAE~-D*rl{eYPvVe|OdIS6$)fk(o0;+2?fH$GOVazws*go3 z`mb~Gdx5JzwY%Ee8!q`saR<=*Z!UT-y6g|Q=tD2@fcTlN@RwcXEp^5Jrit35vCs?V9O_{pyFz3rlRl1u(fcJco=F8bbZ z@u$>9&p*28?Q!wL?+U+{`GB)M&Ug8XpVNQ3OP;KD(fdnRe0dM&jQ;~yd!Fmce}{`7 zS+4lsaHXH(s^1H)^8TYM{;yo};AgJ-`mw7%$GY;9b05y~Jm9kPZgqfvg)9FjTS0g`#Bds(p~)C=aTPhUFl7A zmH$>3J&(EQ8RN3|y7J%U%I~nNy%<4J1-Q9*%@(vmZZm>kT9LWrj-~m*jl~<+lw)`4 zH53JzX#Fc$tG#TspO$_}+hb@=p&Nq1;My&l)&zsM3>_%A^!^pW?2>h8@w{JWWvMHa zyf>7Um2N3VS7ERmrJ05mbj2M@zZ_hWzcMIlKG#;3ZPb1eXTm3U_-6+A;gx?##CN zMp}7!!ayTTdE8f@eZA&XvwtH zR}Lur5DGqBso1OxkWYc;h3NDH=_rB=S_XsFsHDC%S#&eCpagM|)vRkKp30~=3l zMYKbdH+EoAgBtA{n)Ho@o6(*svY@h9m%G3Fxcr=LG=_5BA!vya(qi4ig&Rt&{XBt*X{q zScymw${jvKuqvj~)?o0?;>vZ!MSruQY<1xVD7NUcJIdygb%h(&*{+)lA4b`&?Uc3b zZc0#v(&9o1A=Wh;iVH=HvE^XN*I4Rc9pnuerhm+!Xl0_i2#nUB zj1eS4KxbpMH49g`g_h05XaK8e_ICiQp#;}emTf6Ff=lwgydoctR#g@av~F_R8A2_q z&}D0%76%7Uout{?iFF&=MCw~;Md&fMloq>UMfqh1u!ii7P&cr3Iutt(nS>)uaP_0b zm1XWkw1lvjeF#Vmea&-yR+?};NxT&OQ?&eK; zzJmCYaVS`*dN5K`6h9lm!CI&X>!5bz|NlF9EFIUeh;ZwE|8yGMp>Q zEBDJSORTQmGezXlbqFDrCP@meL3vsLn>e z_vYZ{!VOg$iY1GxN(&L@WI1;=PIs?ZdY4FS)PN(GjbNySDq=+xA*!7A_}iiW9?K zw}Ge@dL>U(iy0uBqd^?ZvV_m41|C3|of{hNA1SLWbqwW7;Hvtm*n-l2U1OEZ=+~8@ ziJx)C@^!{hlXUIuXd&fWHix7Y5osf1p0d$O_>@4==1?IbHdH7fnE6P$o40MM3KjFE z0A%Xs&4uf1Z)sS?50?iw76sQ9SFIs}R3)=$+r}JP+HXMiSxVBXRtcjsjXb2GoZ zG|!&;TVozm#&TwuOh6pO4`}>_MatLeERtk-F;lY*#p?>!Y}3QK)f(o^)lJy)SL3}F z-m0tHPC~k3=H|+WD}%*r)(mL%hFVy#w5lv#>mbUSP?bDd++WhDgR_0i-mCFc zny^~#4eU-%cd1o1`@YXw7`oHY#dWMDK66lXhSlA8$PYU>%C9>7kReq{pYaI|cXFQ* zTvJ!JhNe#qSs%M_QtwVqf3_h;NNW(6Ww0}P|7>y128N<&tB|SOCUHuwE?LOXd?rBT-4iz8xSVe02F1E zmiSJJV@SHe;bWz0jgU4C|Gk7`Mv0lW?sxyqWL=@{C5&DLRu)sQ4*6VOR?beEI68+s z%b|brqWt@<(yO9QOO~z3VbB}ssJEL`D7}VK7MaM|eM7l0(^C(Q?I`7754nowftyt- zgtbSe9-ULDbz2H6i>wkcaxgPyj<^ZCqu9zpjV+jc(DJ&D}x5NVBzZ3 zmBkOsWJss)7%+=UHd`NXQ5kDOqK+bGqs>@}8cD?|f1|Ftx;9#Ce6=;=i0vAP%Zt|x z5(?H=o9u7SZ0-+X_l{U8z=L^GNg@L`7LugpAUj&xmC2Ot9xN)emoGBf1lO!~NPK&9 z%}vzcuNb-HN0dK*MNnCg%g2ALie)cRc4DH9MDKs_QJr9Us6P;+K~))(;Gx6ycQnQh zqS^cOo42gid-cI!)K%78*7tmzjuLd>7R>Tnv!_N2 zm|J4a8QnaU((7*%4av*_VPtdXmPN>0>tUh&u)uzpZ)~XASe|ZMdB8f)w(@{=u5IN3 z>l|al^896Uf(mB~s?>SFd$#30Kd5k?#nLT?!dODasC*5-J6(nvbSxpO`1rRx;}6PR~x~N7_GK(`hH5 z$+fM}WA!G?DvqIZK= zc82H^;?`e`{G;q|iV6yrKXTc2`Zwd79TD^9!$EcHU#Gf0bzS&tY zSH8*1H{-8T_D;TSDfX$@KY2`jry0VM+W0>F zFy9v5CEpb`kJ#T$F1UejPCt~@GwvS(J(4DA?0v;!TzK(%BmeoY7!@ge4>^>_w}(-U zCf|)OA#B>gKu_8nqb}J@xKKF7$S+u)-P6W*G(%s^*59M{TIonyhS{)C{H2dsxtM%cx#7<>2* z_yaFfP49*G=0)}|o?~2Ykg^b`&=rT~Td|RRBwa6YlFi8%-s8K)UUSkfOW<{KX4-{u zb9V3Vua_*}h230bw(WfPbcWD>Hr~ib7vAMKzKJaPFH9MCICMMTj2;%~Sx>pVX5yY1 zXR|ZVd6Y4Ox?BFqinlqdq@Q!%PE1hGiC2Nsmu4i60aL(nAmz2fPqLp0f4zE6OaYH- z|LOKK{%J-=8tw_Rj0~F&;jhO`*mK_c_OkvyuH(DV8!1B<-=lrSKFIu^C@+koYOHjk*`+8gJVC36C(+|45qce3#wJ zH|Bj_RnKX(2dUG;gne&>(X-H;VAb2g$HyIhl<&Cz`!FNjPNR@-9y{xqZ--z0C3)HY z1@Q$7?Pug|`gOD`$uC4Y3Gh6PW4{T~U*LIKy#1W>cA8f|j{@O&+Gr4-rzIH~i$@vT z7W?e5#G7V66ED@s@RA-n;xf)rHaqXO?!Ni7>9LTQ^q)hn{8nTE-;fT0;i z%kO#aE&C~Ho8;jkuQ>9IN4_9qmY8*YaU#h;wE=r_aON%8D7@~ z-*S)2bu-{uSr>^T-qlcpswZBFN_9YuF(guvbRr0a(OGZ!U zi=H}>6+XUK-a{TDM>=m2`8d8`UUtq^_Ncs^fV>=U$xDgb88^w2QFdCAPJM#G#nwR2 zds743B+tZ@tZj?U#L_ILunfNw+!Z^x|gqL3r^#bO}G+8}a<)H1oE^W%G;$q2ctc`Fv-6 zo~Q2J&7Qj7y=d^g^=pqD_k{C?kxn%-Puh{lx}!JH$Nw(Sl6;R*Q7_LEka5Vzoi|cG z+Ck?o^Jw1^>NhU#Xy=5mzh`q+M$c&-uq7c z;m&JS`|4xtV?L(j4rLC;C6qEY<*%py-#{+>beO?0vT)wwVaVNKM*e%yc!j*hejK@A zw}}*<(+Kw-?e`JJls?bI3vpxdC!ND%jrrbxK}L)f-og*!qEIHki?q-gGGEHuFa@N% z=!}}*MS0N)HDCH}s_wheSB2m7`Mg)*weZ>QvpeoGdgjsIgw745^q$D{BvJ^*BybLj~EA1{?eBpK&CB)Ug4jK{0@1R_Ut|!$&SXlHVp-xwYCcP*i# zU~D-@I%lnRYV4IXy~B(*`QA;BJ(i~pGwMo~8$D^ha9+u8JT0O1W>4rhjQ1mD4rTO@ zQOU#ND+=jv(g(cAX&Jwy52Ral9?pA$J}`}EyAL$PeWg2rF(l2T-25+QK2|>pIRo$X ze=S(Y8bChtP-m8g^O)l^FSPsz`fUv7`G@c;+#H>cXVM3sxFMXEDSY{7#?>XaXOzhJ z&)8qW*q``G&fDu5_d|^NrBB_SQOcNKx(j5?-@%x_gE7B^v3@;ce2DQ~=0nM8YK$~? znn(HQ%TdD&`)zp)@5Usgc((P|v&>cDrSK$X`H@L&v?DKd-Z#Op>eqL<&*sU1G9P~= zTCTIqfzG9b^H>+f<-m80VNfOtktudSV9j3BK>ta}WIewESS;ptYTvt2ozolAl`J z3H>751do#TpT6{S_+&EI^01aO>ON#GcLllQJ)Olk5?_H_%a73a#?kklyNfa16UdP9 zR^}_hYe^>%XQa2!HR^WLhh*-&n>tG~pWlDbld$JiZjsyJ828d6^tTZF-AUNpq$~5q z-K0AW{ys_nv&Wy`O4`Ve2!0`tVa+2yc`OTBGpW$A35ZTfo8Ht(dYZJm_uY@GK|$+I1gypwFd6w(x0-08}?7zJf_s5QUw=D>DAn}DZAo$3Rf%(uBW$b5nE zk#WziN(o-r7Hv93^c*~b_p`Kfvs==RzB z4jyaY!ApJFYXVsZ^u-xHsoTBxc3o#=oK0qZqv>WmRrDqrP4nTwvmT>m0(49NVhpN? z&~B54J-^=`Yoxz-G0u6+q&-qjc~0QDgns!R{Xpig7myblnA7Y&8=nz5X!JZ?=h^oB ztZ|38vInt^eTqjHWcNJw_3WOi)pP1XPv6xuepq1Jv%@?sUCif0UySeRVm=>Q4o(FZ zfS&`u9^Z5Jg#hhU^{;;V7?WP-KgEnpw%2K_*^g``oo%G?DDfX7uEdkIiO?*vJ(>Ip zt{%K!Amc#-ymO9e@F>3%+4NcKK1rMZ0sX{$F50eQwPl$^UXhf z$)uknj~94`b{L=HV^ORU*`NXtL20p}s>mfYf@g5gGb!wtm$WXaohSP$}6@+=r8dvomfk%x@0_B>0{%G6=P^bOM&&fAG> zmU*azSAAjJk<~hk^cxv_pTItIi227^O?&M0L>3PmhnSDNWzqk!wP*5H!CYB$4h|>u zBtgII#YX8*I&x6+VyOIN?0!{;VLW&%R@x%t-lg3nFwU9CA`h}C0a+9`X53+suQC=U zO!91-!5lA<@i11H#jIsy-RujSM}1-AC~eNqxSEm5oD=zOt(g5k#Z*MawfCaCVY{xZ7To5>o(Spc3s)y%z!jBFFdYv&fTcSteuPpRvY?6##q%i z!#u+m#(URT6+>=aiSy7e)ZVz1A#BZ=##w!wJ^b{uRzAw!ML#e|w}Cm5)gM0zzP-$2 zy!8BV)+xjb{UzZraxf`@J>>Psg=Lg`*-@iM+@HVNsAwaMggwg|+NL$oKff8=kNb8F zd$T(@mcD&0eLM+SJC1qOumQ5RVb_%I)YF-V6U^~@QW+;@&BOjpzVz7yV`HV^PejPu`Ft%aWgM-#enG;2x+(%yd)V2%C19w+N-^T;c4E?vM-`|n)%gGzabJizIp80yo#znt0N6y$&GHa2nK`)R-sTF7Bh3_)wkv)e_=#us+ zLtj+7zm#kk@N;%Rf z$A*%UMNgZFGuD@+EfPM=!0isoBjsPlT3f>GfZyw>>x;>(v57acO7q3zYjlVFn5%9QFhuRLnVtOyqEAhOmFFN#@^In#^nplOA?HPJu@x`7rn?Pq}PusM| zZu+6MZ)3MxtFHe7ZGY~2DTAQ@fX#^P;~XpfF71B>&sg-I8LQGegnumh!}NUl z?H$5j^t#J0TfrduR%(BtkKZ8wGunTs@{8Vk`5ogw7Jb7(xK=}>?>-h6V5sX z3ZL3Rx}2rwAGGxROL<#y2mQ^U@M$Y3@rpo+_aG?oRx0%8gAz}^40Yg{w}3lE3KT7xxp|y$O_dD|+>XFQS*hOTM)V{g$46>=EqH@fGtWmxLJIvwpu{Us=zkEDc-f$|?p_WsK%svxIE%j;P};|KFcZuN5tg%Zz~$g5 zQ26duxT+iBB;`I2O1aN~!$|kELjNgH@)3RepkMUuOSzjt34aWf@Qn)n4WNWSq|jdv zO8D)dU_Tcc0oXmA#PUQqZh zdjF+gc7jX64WI{Xrc>PxHqaPngZqZ7`mF^e-LS@TjRl~jyAqUibHL@G50w5PjZ^%) zhbjLqQ2gsb@!tnZ`>6%3^fi`i%m*c04wwUq{(cj_YrPzPsTAQ$FH8Ve6@YgT?mWy` z44ww(fbF34`(|(+SOrSBDPRE1r|@@zqF+)l36$`iWF~kUI0Kvs&IEa{XrzIxjg8NP z@!&0BH)H$F;1y8(8^JGv`#_;51g3y1GzK&xBdl`4b3s46wD{%&g|AXMxDW5d5Ny*} zuQ9B#Kx06oPotr+lk|8T-lnl$V_0K>#(+kjM!n33r<)6sK3{mS%iZ2M9Vq{hdcNcXvpZ*>pB*1}XimeN#yP~C z+cg)pv*{<{Nb`c$1!xama0RnwQSBm9Tol1PkZC|YI z({=cJwEZ4QkMIYz{T<1VzVV8-v(IDM?en-F>hMo#|JhO=2mLd|PJBE3G_jMXeg5_V zo<)zMJ>P$TXR+J!>x;w{dpY^Y?@iJcyFGvBQQ1dZ-o`)Z^puTnLsMP}Z?9)=(DCi{ z$w(dEUXOfJ``h#XpJ=G<|~>_$zGz5coh`h`aOC+iuf{aTm*yQJsz z7kTKk?{wKCuK16Wku&^Jm;YBNkJJC>uKaem{D0+&|05zh<6m;cf6HZ`?xMHVmEL-n z{TWyK!(9F!x#+vg6@IwOztm$=IJ0~fz5UGXQn=y~1c&z{nN@_*aqf5GMdU#|3ITzB$so~t~zHWk@O zsn}Ay1&vIVC1pzIl&x#3f2T$7t^`+?6`?pu?aa7$QXH2{Vh0G8m&k2zOQ%u4aw8QK z0xGu!H&$)26W>^}Nm@)oQwQ~! z7-6gqW9j*^W9crWT8v#8-1r)(YR+Orj2&DZ+bLeu)lnrrqIXXJ$}6o77D?6{(IPic zqldnZsvC>Cda4=S-$Lb%sp1y5{zTmxnj5y3m(VY4cS}`_-okbjSyWd=_qXjEzmMu0 zoPYI&PFLyKdPQTaTe==zDkEv5R%@ zZr;3%j0HaV#kzOL6+CtAF6O(PSC%LM7cc+~Ln{w_qn^}y?FD!BR*>;x8vVSAX zQS0~Ly?2+-qELR4o+P;_*D%h@!{B>&qS8WwT0i%_J3F05P5Y@#m7X2mjh}UoPc|3i z=Vcxuzwi=;wyBG6TVveg%g)T#X-FV%whDSl$B5i+?N=Bp*YvBl*FFk9>mFaXPOpu5 zko>l?nIWXMk>2Ml7mJFpTy5|FyqZXPxZ3bbXv-^JeoNn)6F>hn5|-?>dpkUU{dB?qBOZT_*4B zrz8+^jE)+_ha*mU8J%ya3T2I_1#9dF^ zY~so}YB^u${TOhT(dKdVOolpV z7v@~pS^XYe_}rz>WWcljGZ{3Am*mWal+Aqxd&e(U01L7y)u@1Dc#9?dtOD&NgY^y};%@BgM< zaBk%R>%IKo_td82zUgt!G@YBE-cvtC_$@j;JDnWP@`bqH!dbum^EX1f-3Pu)ACR(h z4x(a0=ks~pp64dB6iIq%IQL0(S-5*zx}J0X_Bk+#Yw?@@;-$ZMrN7J!w7lc-mfpcR z4bE9u&lf-G%cs95dDG==XnaMNCo-A4A*C~M_bwXfwnxsMOwH_xTn)WzGkbCbg%>HF zx`fAr5zd2*Nq9Ula-^?s{*L8wEvoHg(?*uiRF^Iri+{i!d1bwN0f_Zmq;V*}^# zgvOBIFP8RrFPn9|qev1S2I$va?>rAby`}GS&fo=}U%|ZqnemFpQ+m`oUw`e9!fPC7 z3qF)HZ-Z$*IL7hr9$M`)(_b6nU4IH`N;>W`PMxmY4eI%m$71u$D#uxK5U;JffS!>@ zcf1wfvf~3!i_ItDztnx?ljH>jj~XqXn(i1+orHJSQPjPXaP4;k>UY(7U zb3Aq*57Tb#KAyrI62_X^iE&1qoQ-8Ku<0Gp8%MhzWu#9gZ|Q4t&sh4k*yY*#cbU!Y z2}ZhC$MM#g!C18JoTk#Y>(6tQagR+~3uW*?O9YbE%()i<0onI-nL>R<8J$SWPIk;6@`qEa+mYC=AF#FE^voU+)U;zcAPtLi_nhV zr9XCG!b;xbK3o*#@;v|Ik1K|Hra%XtS~ ze7_>UlY4A7Kc~)6ajd(EOjYeTc7K<$%tY42qtA&fXNx z<7iCmK9UyB8#jbsq2`0l%U8+Uk`4`pxiahK^KKFEO68p?>Xwt3~WnnGqy?i%Q^Cjdf2{D%~G44-Wr=J1xR9>i=Ejo3sJ?&*huxvjzQk#sF&(&^hJu!q5&x`?Z^>NdoKIXA&MP3S%rm%0d^tk9 zh(+hw`B6GEhtr<8bDKxJggDM8PY-Ne&fSJg?ly2w_|1eH4eOr4xoCTh z;wNXIMdrvebX|U7h;zXQZw=@1J}GAX9Mp9gi{A`vNr{wy8RbtK*7lV|%Dv!m&Sjh9 zFPvj-5sQzRoaGgF;lJ?loZ}3#)EjHHw+iU95@yFQbVtsG|A8*e4HBH<|t@FQxt4GQM#r*{<`l`-|PzWDF6$hiIGaa@KpCV_pNVj#Dqf z7nygIq7R`HH)I6WujWF(Vh$6MdCfBc+I`Xynb*kv&so+t=i=gRnOpH)xl2D_PQ$$> zdrl*|I^d1Oca~q~2JBJBY)i*8!+D(5Npgq(73s*HKo|OZq<`7tQHf*UYb0sPc+|!i z68a#Ed(4J)hvt6DS^z&D1|J%NkD25<)OScix#54PQuqSj`&u zpLAIF9RPbzO7<4oS^tzAxub>e=~fg_hBW9csWe*FQ{H8Tfu5ULyI!EY%h~4(vd_1N z@&+ldfi9U8p4U_6_empljM~G?919)n`vh1o3hzotCyjLE&a0PkDiPXp%*g)41lB{` zeOqrny?<)S`tFpHP2y2dNjj^O-FlUqXTESG)>ccW-*ln6QfF<|rdU@T5 z&J#*yOovXP(P}HqedAc~MEi_h6CgX^8E#(o(AR`sFZP0Sqge+<^LhA-o*vpyOu3eF z$Ix}S^Ui3U#9FhcF@E6vzJgb;8JPEEj~>GZhI8Kg?$Tqmd1y~dC$f4fbtrwRlXbS2 z{uTQ6$QCsZP`cLS?wk1YKcEerz5BmIZ!`@j4R)I{(19dr`?y;cD-Sa-nnxyg-d<&2 z$sTVNKceaHrtQ3r?0lLzP0qN0+;zJA^ykp&G{pFG+?h7*EQ>xcRN9s-rESEdQQy6> z$M*lE|4P5kq)qLBmzLbqJQlgqiB2K=?z`~T$ro!5ML$bmKHJ|9pe>QUVD$s~z)1Rn zyC1~)66&NM6|6O-?Opz?JW^%8tn-k)`84`0a;qs;`3^o9&bx{BT!O3>9SZRYSsx!n z&RWlt0v~7c9I9lGfV*$0lryy7w8|`L6|mPLve4cG44D%b2tQIZKSX}Z9_B%jhjQ-+ z{X5p4B)UEd2;<~aEZR(H6L(3|8rL2AINa?cR{Wi-9Pw#iFN_|#4aAC{`A{_e(0w-A zMnCPnipW>y;ORS_Fj_*$*kmnZEuJD{g^#xElKNtfZM{qRrIuY`Q1~Epa-KFS>k0!c z?|CLJOtfV({Xt}M04(6{zl3L=7qkBr7DdZv_rHa-g??H{JC+8dn@?pBpnM?d7a>(UHJ-JgVY?^hxTKHCF!p)Tcd8 z`>=cUc$*^oP{@fe_mA7j!+RC$)UgxlR*xNDXX`7pWFTQWKkAG2T|53%72m+mZfo2Z zP4`)Sbuho2vdw#bX-@<4S%r=E36XiWJmB7>)dmWF$2%zGQQ;eEPToepaL0>Pr)JvD zetF>J=TLGzRvHICBaMRJEw$DO(nfYbr&C5b%PZwdCyeNJk@DH&Y(3+w%r~9!V$o5! zDR$ei%fj7$(jJ&jcd(VUhshcws-r^fk*M{#&{9Y|$uCUb+;WxC^ke$s0`R58K+k=w zy`^65`3!kkVPy_}mUg84q)m=LV*8;mHhlr%{&l$QX{x^5$GfekxsPnGDC1cY20q!8Na$NV|P#T!Y$lS zF1ahaXW?%HJ&*97bOLk7pHODQWR902x_#gW`_{4^vgh?Sp9`3q+U1gP_Or}0Re8oA z@vx4u`60a8Df^1LjAFll%#bq3yH9aHtM?!W@e|Ym z_M`ejw7+!+PYn5v&I}La(Q4ly9YJq7^=W)sT4x_tX@y85BKsiLKDOEixrjWmX^mA^ zJ0Ee;fz0)ghR8Z=pIEn@SaCBS4d*>cI9V^Q9FR{qChddQF!IjJI5Mt0(DDSbQN}NO zP7+}qP;k3m``<2We?5jWcM+Xl64oAf4?D))JE&7xGa#p|wScUR>~UMhzf|fvbYx`9 zeIrTdg^?{gzG$@UU>x7EKe2y)B)S&+(`PJwgFYE+Jl(0s_Ds?g{#fsD=L~*_>(%>j zqVq-Gi^byQ*=kok3~mq1y9TZwc00;_vo3chG!@8u+CXMT7gq%eWnT~4IHr;$JhWwc z=&kG){L`&>p%tG_vlYf19L8B+?Z(6fGFMDyj+lH^bgudE%h^4=>u-|0P0c4+FAJ~6 zqZ`WU{xEwU|KeJwFLRXf0%eoBtq0}Zbcl52-E;%8!%8P!$@4bP;$NTY?~em{=Hx*D zdfYsXH5asXa>)6bB-WqL5l_yxBwuA*ZfD+Pt&h3@%WPW*h7iR`!9oz1u?aKZ(>y`rcS|Z$= zPsJ@VJb-RKFfowPAb52kBLrIgVl_I8{@mBEpHRlbSJ89xE^?}xXInpE2mMv_vSrHt z2>IuXFkTW`WZ&~F?@%N!$#*BuLIb>>ANqDyMr6dqg{i)<=pAVZafjbN2Ne3MI^$Bn zJ%6X%is}K9cSQW7|0uTq;5laIbJ0E_b3s`L$o`kmCix2r4O^Hm+cGY|{Lg+)7>zzc zWJn@)79nr0o5bvU2cH?3k5hl3@GlmLCriuuoGD%g}N2H1&{XCLUQ&p3BK| z`51Id!Vei2)=y1fUp_iE*nElA-rPF%Wd9>V9Z5Q@MPl-I_j=~?gqe@d73Puo&n-t! z9x_sNZoWplbnE*#k6ag>A9lN(MLo-zElET47e;7{FL@F!oTV*BD36!&u(q*u`4y6W zg!XBrZ|@8JH`c?uSX)@*rOb6%6Nk~C9M)@{0_sijG0Eo%Xt2lC0_3#l0Q7eEHQD;#CB`*ki{~GITdOKxIFzjeW|+g+@gflzm@u z7alEUA2)@*ll%|H<#(Bb32mYqd`4lQ`$9(bTi<>5dmnuF!M8uSdFHtfmYXBrxcO|L z`{Yk{y;XBh{RbysJo&+>g&%xSYL0qiW?^Rcoh$dgHS5(EKDe{&UqATUH!plpV_x+} z+S$zRKeRpb)~w9d53ZW@FCT1t^1~0(a3`%JyV0Y>`L-kPA^#-b6!P`Z)@+`&F_v0- z6aTYsu--(%*}N0EVCzlfOo*kIb10s9tuYMUYAL+a_}f79V)g>3jR`z@5S=Q#lWUPZ z6K})1jCRAj@T|-sr~{dMaTJw0k$xA>lQ6O7!gB7#*3ITT_u`}7zpl@=9p_y(>q|=~ zcRTwN?Z_kc(dCL&zgrh=Mb00ovt7?ler4>aicacA#vA9EtfS0<+d1bJVm*%Tlv3$m z?X(H|TnuySetn5;%!9uq^^SiUZC&d!jyOT)%?ba9cFc1E>%bD) zLIU&W-RM0_n6B+<_>28c=$3t?d+1k$llg$NjPPi_mEN~>yo2l;#}V%bfu6%X(DD+z z0mr%cu&f(CP{x{WOGo1XIcd*Vk|qa-bZHs#Di=AYtz2Whk=4W3hk=L~imijJ#T zTZI0UZOLx*XT9IXTqocg96vHPkdb407lddB-fh-cT`6JP*e`L#lE)bp z?~>o{cb*@cW+aRhSuXG078~eCqn<3eVh|s<gurR?A3u`tCx9u;f!q(=(EdD7K=(8_3}+j9;?%oe;Ns@?v!6k0NXrZgx8{pjY~PBKfmt4}I|!%go)# zfP~T-{G=Y`+#dJslR~T=q|beUXX(2cpq z(_8un=o9z8MAinhmxOnNTNm(-{i8(V&38QGN`16R=lGQNm*j=wUJ9*p-cRvYoe7jR z$V;4i?iwLSqO%df|;d*CL#?&OXRlW6q4! z9$+o|9OrAtBa7%LoVzz#7ziwsy5fJ}yMh1Y-8KHsxWD$Qv&pj8CTD`>jPgSMdyz@P zcX1PYg!988_#UDC*!;H6DGgWm5B^O3ebYMY``PyokXQ5fQ%<>mz`4@A9dSm*#JF!x z7Pp?b$wz*R`ya@shx{xaAXjKljAO_w+7sVHD&50;F4>$^dXn|`diE`Y=A_CQar-Pe zmx5dr8GHdh)t+RY#l4pAu|6;pFUWqQ@G2&c{us{N@F_ez_(60{YTtWUPWTdN6PZv* z8J_FO!(#I zKM+2#^y!cKh750BQET-Q=0?d0qbksSk}vbDKR|aZUIpl2a0O=YCiC>E9!gF^Kn}*4p}yw1=VcDf}p!&soljy};SX-w{6c zdWJK1KIZSpR@tBGvgX_}ml`~;m3Egv-;;MlBDdaPE)CGdgUg-#$xt zk>^`Peu&H?>D~sxV#;JQ^wp=XsffhptW>upczk zd|&qUCA}xuBm9uFL`y(hU+y7zGY(qzCK`2{8P@`|n}{c{P1YTSjE!n#X-Hi-(})#T=yAvITjD_<`EcI#j9|aV%Y7~n=lSDV-^Lx0v#uhe z;ae^8R%9;cF|Y4F$G585(T&=5jnTqfw@K?w--6Xa>h6a3Wq zWvMGQwih7BUXt6m?X85^CsKO_Dvvhy3Z!f@Z|{Q+J8uK`Kds>| z0srqVQF-^DQT=n@{Dxht2A#n_PT&6Iu^h_&H@xq<{V=@fKRY|rd0~6qPnoPSM9L;S z3RAxg(#ANe_!{XR=6x7*=WSnN-s9!FFz1jL79U(=Pv#{1U1L)JnL;UBtgr_sM#IW` zNsn*fI~aMd!C1;&1hr2sY1n&8dk#DcFLMG zRJ*igi{#PC+$vM|JK_0!&PIp6y)L6GPR>C0pChj*r9Q_KPTcH1*~a-Bd5>n=bFg9E z3*|d&^z#|^+Laz?Lh7sNIfJQ6HAYiro4}}^LdANxFeZQO1UIVr|!RhO(jrd;)=h_?Q9heJosr)bDe+K^#Y0TEhd`xs58j1XKx6xp3 zYlUO&W1$Gtnf$W{ZSd~b;B39+PFbw*oP)CL%n2<2Ol=ThIvbFXb4+zqn80U&39h@pe$$nFm_ocyDYWb4v^3 zKnb6sk@jraWgrlD=3y4nkF9h7;}-tWB;%WN%e zS;04yq3);1hZgULOVInX`4-=On~Qy^*=eNy@SI!b`pPPOg{#XRE}kh*5}Jf94Mmiy zKbCP2qda}>uYAu(c6z4L-)TdG9O zi&X-`lx(s{(8^)@RW4bMmZ}`3TRo^1Es;cUO{lDFb1^!Sq!kHwq_&On!b)*03~nk! z7m(o~WU!MIw0Ntguxj;Y$!*R&OYc#%g#}e(2~ual@=&1;Q(3$jJyXR)2NR+l)e|K7 zAe=5Vg!ICqB4^15I8~t`sl0GaX>pYiFP$*PFK!5T&k*j&_SnCn++&9}KKV;*kG>(? zSzG)+{g~$&kR~E&z)#%e7vi7CLH-@u{}PdrmxKJ7qglUE2s8Fa2l<~A;mxlNALRKU z{~8hI{37H-&_Vu5BDDE+kx#7ny&`=1og#j$@^y$%~#fW(0mSmJ z@hktK`rl}obnz4Z#)_ZL|TZbc<^4rT_jxze;$vZ_g|c4`Wj_M*kuSA0B~bRmmS#Sb{R!|7;T6)Eaq0AK zD7lN4<^YttJE7d&3PYGTSekk$`8rEe3*~O5HIFQ}G|Q}cq}?anQzS_ zMV6)zN^TT<0_yPn&%qwb&6nVLsB~=e?vKG5?)O8<#o*`RQn&$5^PY#`M(%aE_*3vQ z{uZNPavoy6( z@=;4u4JE(Knn%hl%~ER~iCCIaD7ndS4Gh7jIX8WR<%*Fo%JXhsF6@L&5cBCVDES6^ zUt4dvq87U42r8TrsBo5Ani8mRhAqu}DE|wf&M6D&#Yh5O)A_!U^_ae~L7#~#|XuVQ`%%AI!06{YYn&+BLx zGvRWNK}h2j$+9$8Xjf@6B9|>q3@UyN@K&DJTbeqk_|;mPC{+BWL8W6Zl)X_<_C{Ko zAe6l$upCZ< za<{=6IUZY?+$;T$S(-yo?lxN*P5$NXeoM0tK7#!QsC=xqH1pvRp6{7y-Cqi2 z9L2{W+&Xl^LiEnz5!88=X?v6!mq=S+9&@4W=UAF7D1RJFbDVLH z+=;32G?U?1cz*eI%MQ4X`#Q#9d*O0e4$I-q*js98B2ejFYH3QK(t8?Q3qw%u zT$ya`_dwb2wlo)E7WbW&<~)@B$Rx*k0iK^|dD`PK_y;_%gL^0^wU#SNVKdK*;N!42 z--f#rD%>4#JpP=sG-sjwJ!5Iwq5M4w{|I-FTdp_&!w6v|%2(v(8kE3q_TD0}mv>`j2Omjh*Ql%*L7WiM!H zvY_mtch=3nvrzWh;W*?@Tbec~dnYZ;aVUHH;S+EVl)nw|CRhz?U@25TS_EH&A@~f; zg=H`YHo_qM0=!IPz6~CQ3dbR+@HbnU15n}EZ)x^Hg<~gFcw?4kt2K`_Sekk$xoW8J zErkl-e5mjhc+W?|7rF1e)%N?%Q02M_Dm*bb7Js%{ng*!w)LWW5D1Vm0Ct(Oyz+5PI z94L2sC%7+IB3CTUWhi%~=L?!{D0igKOZKF1(bfT zN>~r~!2={z)kLRw(&nmgXpQ<6&tILCNodl5c{N-)U)LQ1V+XO#_sC9b5`WLfOlL zvZuxbnyXZ9+3U45SD@_mz*=|`&W9yX@tX$a&SW?mdm&3R0m_|ROOpfTjv5cy>!Hxf z-bE;TotEZ2l)Vm1a}LU08gKT`z_5rD0|iLSt$JY?n_Lgh;s%6yYcPH0Pk)KWk~uz(ElmtQg4{It7?l1s$>&&_QBd+DElm(Ug4|UK z*{9(}_*r-wE{6x;DkyzxE1~qPDZHgn?v_}ZFqFIVElm-WyCEp~Tjwo*#vufiYMG>tGO0hC3)?Anu15o;5_QG>e;XMNt-gZlK8p?i~r8x-|-knhLTcP9|EKNO>e4VAKg_5td=8@%= zMtU|SS8i#RLdi{o)o_$YRSw;EP+0#Aw!xR6^u)>kolySAEX`IZcN;8?^vKEGawz!- zlzgeBk={7Thb_%~DES#s>5>CwZzPmG>BoU43(B4<9W+;|6tZ^_O8z{Qe21ku2PJ>j z(wu>kKMo~-3`+i}rD=hZKV)f|q2%|&KZgzQPhd5S!3b3UC_Q&72St`EI&t&>&!w+U z@sWNy`6vB!BXPgU((HutFJ@_^w@&^og-c)&{6i=`bt90wVreeJ;oSFFntCYrYhgCe zqn4%`%Kb`9vmDC(a;R|4hq6})Wp9S1nFeLAz|u^HvNr+BUKW(Ss{~5+dM(WrD0`PJ zO%Ig4PHP@HZ)rNLxvTdMc~|e9M_J z1RsK1p~BN(Y3krUo>#&xFajTh6X2upDvA0qyaL^LSei~K^W#wQJ_Z%`O|F8BL^(aerq1#0~5)cJy3Ex zq1xkmsD64WRN$yyPJ?Q{F0=TmaQ9fQm=7~~&UaKU*)#6WXWK1J49dLL<471F zoIy)dFwDkF`jBuUl4EH`LB%r&`9G3n>FN_yJf%-i;qT?5@OMJVcRBJO-bK&G0#hjMD@u5=qIod2IF=^H}LI>@nog@u+lj?R#wY z81q=^G3+tq(ec=cW!JvPW{)wCl^(+$LmnNEoy41;*R*+T_89Y6=`rjv2M=-GA3VVITy{q`dK$COa@{w4|8R5|4sYTr zJ&)*99JzZW+77Qfb6r+u&kdJvxN-wp8gFdA5!oB}b3K0JNv_9kY`rlnbNA>yqxX$Q zbK{LYJZm3)hTm!H^!ajx796qeq1NNt!~NQaaZ|$dE6DQ$8uY9ugz%5J<7E^w})$I z?nSOw#`mISvS<8du1&Y>M!RI}mYug`Wgee!azYzgCXe2F>{k4~wS{ZPt>?L(z4aW| zrrUO-cQSU{POj~@o#EPc+i5+?+leO1-rKJ7`+TS~L|8%{Tzf-Txn2%k;o6>mCLj6y z)A?DM%@YqzY?+9A6L)hxH>qP1DK~llWb{Q&-oy3u zi(ETqp6A*;>kzsx_s=@OHCDK@5I66+dJlGIH_gUwVT|js*{xh#W*_Bxes(9p==X!EY z8`q0#y1AZT)5*0ZdNhi?=pn9GqP<*uqL;ZIs%fbqXKI>jvNGFi&eWXcZui#nThd2LfIvK!89IJ*HYsT=og+`kcDHgzVqqTrbyO;o4o_!?k(yq0Pi;^8v1BHlO8sdUHG1 zwuaLUq(Q?;uIC#%xt?q2;M&`8mFwk(D_k#b>E42mPn~%R`KL~E?Rfh9)1>#)=eTx0 zbMYCTJaeAwo-geC0{QlZ-Cs}}_JbQ}^l1S7zk3;sNRR0L68q#K?>^|=FTqUm{`>k_ zx~DDo^%*rvp8MQlYyazVpZmY}?vHr))4co4>#ckK{*ZgICi%>T*8WcXlHSvQ3)}mn z-u+4M{#MyX{`4Yi-T-uet7l*HG~GwMd+Djx{cP_(M#rc7PkZ+om+Afq@BR;%cj*3k z@4nl!f7rYKoag_RMb`g$p8Q{X=HJS|K4JFXf9pdox%Ugt{1yf;y8luEGFvjSq7Oh_xDSz_2m8i4PPNWZ%7Ew5zpM;Kk+H@SN8qCF2bUF ze}Bz+@=y2vexTu=d2@la@i^%%bALa|y`H(hKjbOz-rsMM@7=dS{e9WH_xFp0C{J?F z-@nr6-TV7xt|Klo_xIm?nf%cGZe!gm_U`@tMQ?fX+Q*^4JpM`E-=8(ki(e7z=la|4 z`RDJi`ka?O{(h=v%A4%Bg@F(7nA$*DV^ODS; z#xT+R&nStvGu z|C1EH9NLG(@V=E~er;0x#wUgU?j-+d-Uhihj0cJC7bV@_oOJ)+)aOL`x02#hniT){ zlfpAEDZUl72Z`?GB*pJ1N#XV8R|EC!CrR$LC;7iDDg2v~!uzqL^!<5~{p(q8N(|pu zlI~5?{of?rKbhqJnxuPPw+wQBR#JNOC*5}>#rM7>^KnV}eJ&|}-%V;?ewuWDDd~P$ zlKq#H!n-^vJwKjQ9ycY0=c`HKRoW(|Z#(@@;{DH(%Fox5@+T*$K5{nZAp0Fj?$1pM z-*1w_H$BO{-%pDF`Xu{5ND6O#Qv9MxHa%O_nZ$gNPb(A`6Eg9KTo>1 zTBV;@y=t@7z3uB^^>uJ3?dVVV7$HIbYkHvy8KwGUA<1?skqT+QEvZ?>2Z{66dTch!bE zeH7ri_DK1|Ws57MdKZ=9?&IX}+>f^HB!fq4)~p|R{P5Dn4@tu_%CW81apLn}iSMLU zRP7q1`(WTM`+)-=GSs^Y$kWQ%4{iqJRz+8%dl_ZdwKb@Ob(Mp=R_*5!i;4$7pHVUJ zMCsc=Qlcb#R#mO5&)iK}`<;oK^iD;h+UcrQt5(uP?plv0rBzU#SSa+Q zrmB{Yd-Tl^O2uo|L~&3dsok)K$E#5KZ0`p?ok;jjBB30m`;@{hgXy%PCkCAKTfcf$ zVuIOkcjCI0UDepDH&(3Q{P;>fI&rMiQoOrq^D32v`qk_8DGDZp<{qo>no?TN=O}L3 z8~8XS@iQ6!>y(7Jr1*BFBI)y%1nDFb>$msq%Bm_#Lp7?OS8do-O(^0n5BUTp!Nm`h zx{K)A(kmt9sG#1oNqX0n{*SM&k8Y?=d?JO}71DNIVHI-wiD|78tkpGAHSQa#XsE0v z=}=DyS{eyopS2pU$5FISN>{J1aDTdG@S)-d7u#D^Nmc7js~_hBE=t%F?$<+Z_@xXR z-Rm13uj4D9_+vLjlxe;;8~EDDl~4U4QbK5zD5-@K?R$ma|B%TwQd#ppaEh)bSaFZt z>f?UvG*IAd>if-j;s-`@E7d1ggTwgY63HJf*(Nt$vq_>E#8h8%B{bY>5AFTZ2Npl( zCcEOb>4~a}x+nOeud22lHT6zKVpF;Kai=1>Y15{v_0=2rnb<(rZ>n`F7T*7G#VYrg za?<{)sCc5D52pygx(aDOAKW5+j*qW+l-z#bSF?WbV};gx=%$*==z6*t)f88seOz_D zN(3QaQy+CI$`&trxU8fiQvBHBGPm$gXmiYK@A&yU0)o$jAn|{@N z&&IHVTNT;CZHo8tVL~xXE92VsM+nM`)OJ%y49W6G?I({3&z0x?(}j=TN2{P(NRa)J zklS+%6hpU|>-$36j`@|cqF!Hj+IV`k*ngz{G{KZ?9P|-uQUW9!yKx`#X=IY6A?9uw zv#CTwNJb9IqPh)r6>64;40PFZ&1z^oo~V6tme;YNUp}D)ShKlmQ?-{t zE2$HB<~OCbgK{(K$(a@RBtNbu5Im>w+p*GM@ga{r@sz?TAI?neFdv@U;g9d%Ksb_~ z`@u_k?1?8mwZbVMs_whvE#E`FYxX*Cr=leBMy-{a9zVlYZrHq@v{hy?Kyydok8>|E zwTX)t**2kKeGN|s+8`O}0oE$kY}!B#aC=%lQg&_njt_jvZ6)I^hArWUCzbpZ5`$Wc zboTtVV!(W0_@HpDO7=d*m&|Dcl0tS+kW!c@x#b5gg``sJ9%__&+VyMr*x4PSRy;L%I}pE!j)FWEeRj?;dFvSDmWh|?z#D) zA6gG__Csw9wCYc6UP*a>d=)dkig;VE&(ht|dg4Qgx}`!r^ib3KDn8JcjQw(3{l08h z&#JLQB(;f7Ma``0RJTrT{o{OMqw77CZH=t&;s>|0{9Ar-JJY}A2e&g=ws8L@&AfY7 zQ7Ha5bI!b?S#xL1nl(EVnmuDC2D4_!bmoj1a|#Q2Hh18?afXDYZ>YOmOWujv|mDh{yobn z+Gpeb)ANc7cWSGj?q5Yk`Ql}4fJy!ojQp6uQz&%Kaq$~haj#}eAWAIqzQ{)Wc4q`15|E;7S&ugQC~)C*s*#oc!l7xaGN z9%WENMEjQ8NO3=R-n%P<%~|98AzmD{S53y`$XO;XJf$_|9nMf@AD+boi)*-CD|i(g#&p% zi!NDoqWe0haKSY62HohCKZAcY=yq7J*V)+48I~*;y1JHkVJ}isQ?xF7{q)EmpK#s}XDeRFjg^trIdU_=nP*Mt1x@KMx=p5_vzTJnTJt1lz$$K8SsMeK zh1{La&a)*aI19FL!N`Dnu4{W5xdlr(`yapMUL$D}4d%{q^=l9p>9FYJj3&iJ=T>!b z9-4mZS-$t%anBrzpVbt7mNc2}Yz%R(=f6V!5^5;}ve>rEl7e>>>H#!U5 zcIY(d`mg@-1v!w{)CHXNmdc-0c^E*axt|8bq``J{B4-Xde<_|8ic|5g`^#I>gr$ix zkjmd+^!^jwna&*d9Bt~v63(Mq%Xw6Ooftv9hjYfH>O~2D1wzJB2Qf;Y!a?cKE4E z+)|$E9IueaeK#l8)mNyi)WI-rWmE5TKCxS0w?xq& z?bX*mCr^esGsBZPFE~w_tfl@|P=DE*>AFQ*wukqgdv{ZZAK$XJVR!a*yJFPg#QGXt zNm+c5GJzh1Ao5Ni{C?%D!>%e`iE^p(xodH(tctSuwqy1E1hb1zP)=w2^`UZ7bZ+#e z2TqjcaQ0}L_CmUc+R=Fs{o0Zfe6v+pkfuDZeR7HP(iWDcGe^JWl3R)Yux-Cm-3g{C zPx7y6Jo;`LMyolONgJ5guiO6UAHY<_%+yh|>7ep}W;KD|zuJ}9sF4x+FrO&O7& z?U(vpKcm^sE1#h~bn_Q|_0bK4Ps{XUTe93>_J$Ehr z82fSN=se>feX!2XR(o?l?M)tad$QNw_~{f-U4PZBzZ)N*?RY*gYOb62v^9COHE+|_ zETOHLGHi+4)&yy5)Gj%+H6i+h(llk+ZKH8d>5?+-(>Uj6B*5wdsnd+VpJdHs#=C&!q(4|5J|X|zu^H`sJLP;(Tc0pC+jbxNigezs#(MN?O(U#M zUe*7{s5?W7@R*kup-lIOfi0iu=}* z*O#d8oEd(pjWkf4_~(v)2gZQ^mpXgh@zlqhjmihGIfb=cRk{)Tns7-*%HT`$vRxkU4!!)E!4>ZHy5|-^{tm>c@xJ6=UVsM>lhhtsT!QYyXd7IZr z7@2#x<(YA}&8NX}PIOo2rYDxocSgj^<}Tu@vKfXSq+{1nJL%UabSugI;>mQKw4j zC&MY?k{mZTZM}3#C7-HIb?e*X&c;%;)rn*0g!YuZnthC)PAvDzDCs-6y@}a!C;v5u z+J0;L`AQJGLB`ajxEUp^_u*#Zvr?WFCq0WY2Vz_AAh{-<%}sjN!n0XP&)Ru5J?U8! zeiZO5>X%FA7&h*-!Gv!~Kxc&Cx~Vkq+}9M&f>5k%!hjp-cjQ?U{Uv+G28AhzU!w<} zS-EbWv6ah{v(JL`_ry6z=^Aumqgj#}SmC%r?2({Fp#C#E~2SnXsGom0V@a3B35 zI)2fC{Mm(l7rb-sRi<)g#me40NIr2c@o&(X+5fvtcb-#E-1c$4?~};?({`Qt%z4|t zc#*UHZJw(B7V+CZhgI zTxLVkg7d<|nAM=8Zc1_Syc%@;)i6h@L5IR-?5_NNNnb?_eL{qnFuhro@iABD&_J4_ zUv4V)Go}>xRqS-$%|tGhKUKFkx;jPzRoQ!^FIl}AV*@sRzFVElHC2Y?kK*G$Ctq!w zhpxLy#v3|Y-PLQMHk&X?Ryw9MK9JvSiodsBa*FY3hSONa8eGcwHx@LycKo(tWoWRT z00%b{b$j@_JylozK5>dSZ^*!|JJzC4SHBnxOD9Fs&5VO`WF|ip?o8sx^7WevYY6=t zepnBZc9rCto^SiZtiEk;X1Qxo^rLTP@GsFG^3+C}>T5zr^XcNgN2#YO$BFSuo)0Nbq%Hklj(g_4pWe;XVLxsc{4?_%=iSb0r5A9p zeka9^e}miWS3gP~e7HNsuQita7irSJBlC@`8-j;_yC$2uJDfT^g1S7CvE6lt-(Qru z*Vjuyo0p)gQFa4tFz zckak|d0S@iol3?|H&b4ur-gRpP03}m9EjTZ{C3~J-8{lv-J{^d?8RTAe z+sJ$AX&leoWPGmle2hP$w7Nhz@|>)93mAXeHgEiqMYu1s*f^)~e#%w%o#DQ1nc44X z92T7-yJL?Odos;4$Q#ThADrOam|f)D=&qA|uj%H%GmHNC!dvn9Id>}`$GZMD-(~G} zeoVShkBc;*%HqQ>JTIaXin9StI8)Qcmu$a9=L&QLhPC z?m)eC`yKML5xqm?Z`no9jB;0~Fcjpa4ntsW+>gX^bsoRi7d|Mxn@8I`QQSYY{@xf* z@8(g~-avYj_D#XTZnxcF^W>wr9ir{?%SjvWVv_T+1zjjI_vb~OD$8l=W^x&1&NkpS z=XALC2Esj;F(f)d<-N%rIRUlV9e5qE}2fA2dKA4;p5CXixS!BQ$Ec%C{yc$kCOVntoEjb8BL5c> zex*rh3Vx3Z_qBQDPkqQ$%GTKXt&Wn}_t~%@JE%?37>alFDaT30UijU2Km8#6d4zub0s8kP z^z-*0zPh3GF#Z03PO9X%HO}$FKzq!Z^Fnlg`e9d_tnj}^Ied50m zonE_s=j+I{Z9?qHKp*D~wfZ`KVzdE%{$F7JAa`Sw_22OOLdG-SPc)YqXU-H}Sm^9c ze%_gFb-`&&aWCO~=Y8uhb#1ilb;?chxJhHj>`ZsgAl*5xe+tuePHWdB>pykZ)wiQK z`(u}%;hxqQf^OU6j_t}aVwh`90r&mBDAbX<%?!+LEIUJ5Jo;eza^;3o<3`d>bGA*S zb<^(__qCu`=edmg`fA|w*W8C5FsF6b@ca5M@qScc^v6=&cMLoH&fV7>M&Bk=grWI! zaKYgGd373Vg@h@k?7YFUD?@|F{C-(hT1NHI48gu zcFd7q(mq{-nf%jQ;I~<;YQKr~xZ>+KRx$qUoD}Xmgy^a8377 zR%o-{zG2bfj6n9Tu0W&ec#<4C_xaR2L%Hlo^T??2pEWT#? zQ{M4w9uEw3E>y`huxQ{k%Apdq<=ag6BuAVD@CV6IU?l{x7#q?k9oLlC!C$3$s$@ud* zm4z7j;^%M3pNm&f2GsvtBRy%>ErmtD2Xqr=IkQvEo#iI~2K7BvpZ4p)2k9RhI-gaz zD4zp;H0!YgVb5@y+&12yYd8N7b8X&L1&28|MqeG_u4h#)$sDAk(w`@5jX`no)5OY<5lWRExWwmzl-9c{u&)2>R8L^sm>^ z&tA{G`G&*qzh>vn?%E!C7o@!DUrXlAy}73s_w|o)P6QLyzn;53Ugq!QowUk)C*{#E zD_1Bhice)m?_9MP?mH=mcT%i9wNS>i4&sM1G}Y?a^Vdc`&)SGhXWPdycb;9!oGMlN zoO-*lteY{-=W#F5PV5fWh`f5E_G>$7GEjFMXXD>7k9aThrm5Xy!YA~utKbuvC!()D z)Hgi4?bFV6!H3@2KzvDuK%mV8O1jqTcLu+mk_+pdf`iuw=a0O8xO4k$A%2hGcjc|u zJQTil_(RUE*FWSG;=UI8EZckMs5LP4Ez0vsy$^Y>g#Au+bLH0CjF;Q5X`6e2bbV_ej<&9FhOiqqtr2QH zQDa)gxtaYY{_ilqqX}zoHSEQq9J+PcU3+7l#BE>Q^%AYOjpg0u&cW>f>n6eP?kKBV z+dY2@X`fGiIy<`_s$APLU++X|AKZ7@(Qgbtp)%vwdDWGc%%S7b&au3EqWtv|r>B0h zxX&xQZz}9z;(L|yU4S0=JSVvBZ+Un6C)>h*?DtPv=Xv$-Y@WFD{cJmDRGsKVkG0%T zU3qV~(|V47zq!Y8-S66A$8*iJ<-f^eo$4*^F_ex`yKba0-~V8bI^>3{}65cgS7b( z+WrTaOD#FvpP7|*E_LdSM)XpnYn=8$<&%Gd`ttmD)2ILQY2w-VrXTjyWyvp_r?LN; zNyU9XzftonTRtyRuDf0f?0xCAz#A%yZ!y;V7;&!5T=26t>R;&kUdAXkO;jhE$M()m zYD%#=P7@%HX zSY_p1`#kSr-Q~hR%FUYy*SI4Wz4{qqywEi_c0%()zio?Y96M>TJC1dDm+!ifl(t=+ zjb&R&gTyv)N>;qD{V8K>xBY`3rEGlEb}*c#3_0v6RX7y~wKeKT?Y(WY^~_(F2$Ob+ zVVc$3N%WQP^9&*dVP4qPrw2#JZ`&3SfW$yLoDy#nc zIXj-7;QCei&EQ^#aYJWb%%m!lu}l54uT2xD#(!=s>(g8Xf896`b~vam7N2h{yX?x? zG?Lu^=KgKUUVypVh1YD^bmQGa`M+myne4pOU--@)iw}1rKP3>{h5q_W#h3ca-@Ye& zq970)f$r*cXWr>A?^+eFH{o{}XZv$R=5z9=`-X5IbH$(fbvE>Nf8m8mw(JLjw#>x3 z@t-v_t$#@_(|g|bA3SG0Yk?DZH~Js_8V}Zk=iTcj->{>Lhi^&tI*_ zsBK)GCLIrUHI{vgG)df#;J?!iR6frbAZK8`uabIObsux8C3a4=$}8{917qp>FY^=tih0*m`xI*qOwC$qW?hpntbe#ksAo!t3= z_DSJq-ezZG6hG7L+fdu=$BlH!NtHgu`~3Ffqoq%>oBv+0pH z+|PeG?tZFq-WbZ|7t`ct{&zpv?iTE|5H9wsz1u|DN#%dwmAD&vCzHWGrfTdR&Iq$! z7@qgQirh!mUE`d%a~QvG&Amszr)E2QM`Sy19J$Lmtn}QL?Y#R<+@CruyyeatoxPmz z|HijxIfq~5`CGi3y)!$!1zjI|uN&{YadeJz_{Rzldz@2+C;u-7hv%i6RfkA#<~iAq zHM}t8@JjZUX1&{pyU%SeIq^FC%38Ab%)N&?r?w;?ZXapgSm4FKo4j`8Gd5hr{Ns(o z6P?2q%tOMzvHdII7}Smwx5mSem?yX4-nK^P-9@Z}g@=V-uG-!>zjAwQ{?zA4kLR3s zl^(QV<)0+o#(&9qV{Yb6mlXf}FFAXQoSSwX|EzQP7tcBy-(s%5?Iz7Jhqhs-PR9LK zeq0z6UrVpNFTUpe(%)FQcso4i$gAEn%8a`o;{B%=Q)f!3JBz483mJd1*Jg*^Yg2$s z(@P^xH2uDFVkT|(lf&9RJ@>lsmMQtfC7(1RE(+_aH09=0LOyk|4*N6QD8-Gnf#9V~ z?InC^>|y$_T`g0c!&R@^{_BD_PIP#G(|t|brw>y$7a+fb{{EoKn-kncKX~cL?apD= zyUKq}oA$#$%;?o##%$K;GG;z^v)0v{GZwtuoRRTUrC-a$?7e;(Oe9Wu&yWYN4%@r( zhc88fRU4&PgyF`V^3+y7d=-Yq)Q%s`%9FYRC!+27AxC<+Y2Z!&DhJx z4A1Mn#(5(c$hb6-bVy~V@vmZKPh#gz>S9e`_^x$F#vW!b{3VrbxiOJ4$T^j7RN%(K zG;Rb=#oT^7aILdHq2{Z#j= z2}}MkhxL|>UH9W>3whW`IHIp+@4b*Y{K(fZr`>p0n-o5shh9H%8GC+xt}c1_kLQFNl~Y|0^7ZDGwTgWbt-vGp#9OoEqSB! zrttk3`Bmxl9bx7xsoXx5ncz14!>c#N>ua*xsq7!jh}%zWYcw9Q@`J}LP52RgHet`Z zx1ZGCf2y%dl>F$-Y+`>*WFVQ#7$=o`?A<){*2_ESEN1_2xR~-ASzX_8N5l0vk zU&_pJ$~jYa@085kT|w?uZmXEn@lvx@``g”Z9$)OkJ-AuwTh59rFx29ejo_9ZP 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 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/aes_platform.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/aes_platform.h index 87c35255..e641450b 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/aes_platform.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/aes_platform.h @@ -90,7 +90,7 @@ void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp, size_t len); # endif /* OPENSSL_SYS_AIX || OPENSSL_SYS_MACOSX */ # endif /* PPC */ -# if (defined(__arm__) || defined(__arm) || defined(__aarch64__)) +# if (defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(_M_ARM64)) # include "arm_arch.h" # if __ARM_MAX_ARCH__>=7 # if defined(BSAES_ASM) @@ -106,7 +106,7 @@ void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp, size_t len); # define HWAES_decrypt aes_v8_decrypt # define HWAES_cbc_encrypt aes_v8_cbc_encrypt # define HWAES_ecb_encrypt aes_v8_ecb_encrypt -# if __ARM_MAX_ARCH__>=8 && defined(__aarch64__) +# if __ARM_MAX_ARCH__>=8 && (defined(__aarch64__) || defined(_M_ARM64)) # define HWAES_xts_encrypt aes_v8_xts_encrypt # define HWAES_xts_decrypt aes_v8_xts_decrypt # endif @@ -114,36 +114,36 @@ void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp, size_t len); # define AES_PMULL_CAPABLE ((OPENSSL_armcap_P & ARMV8_PMULL) && (OPENSSL_armcap_P & ARMV8_AES)) # define AES_GCM_ENC_BYTES 512 # define AES_GCM_DEC_BYTES 512 -# if __ARM_MAX_ARCH__>=8 && defined(__aarch64__) +# if __ARM_MAX_ARCH__>=8 && (defined(__aarch64__) || defined(_M_ARM64)) # define AES_gcm_encrypt armv8_aes_gcm_encrypt # define AES_gcm_decrypt armv8_aes_gcm_decrypt # define AES_GCM_ASM(gctx) ((gctx)->ctr==aes_v8_ctr32_encrypt_blocks && \ (gctx)->gcm.funcs.ghash==gcm_ghash_v8) /* The [unroll8_eor3_]aes_gcm_(enc|dec)_(128|192|256)_kernel() functions * take input length in BITS and return number of BYTES processed */ -size_t aes_gcm_enc_128_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t aes_gcm_enc_128_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_enc_192_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t aes_gcm_enc_192_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_enc_256_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t aes_gcm_enc_256_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_dec_128_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t aes_gcm_dec_128_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_dec_192_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t aes_gcm_dec_192_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t aes_gcm_dec_256_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t aes_gcm_dec_256_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_enc_128_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t unroll8_eor3_aes_gcm_enc_128_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_enc_192_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t unroll8_eor3_aes_gcm_enc_192_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_enc_256_kernel(const uint8_t * plaintext, uint64_t plaintext_length, uint8_t * ciphertext, +size_t unroll8_eor3_aes_gcm_enc_256_kernel(const uint8_t *plaintext, uint64_t plaintext_length, uint8_t *ciphertext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_dec_128_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t unroll8_eor3_aes_gcm_dec_128_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_dec_192_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t unroll8_eor3_aes_gcm_dec_192_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); -size_t unroll8_eor3_aes_gcm_dec_256_kernel(const uint8_t * ciphertext, uint64_t plaintext_length, uint8_t * plaintext, +size_t unroll8_eor3_aes_gcm_dec_256_kernel(const uint8_t *ciphertext, uint64_t plaintext_length, uint8_t *plaintext, uint64_t *Xi, unsigned char ivec[16], const void *key); size_t armv8_aes_gcm_encrypt(const unsigned char *in, unsigned char *out, size_t len, const void *key, unsigned char ivec[16], u64 *Xi); @@ -434,7 +434,6 @@ void aes256_t4_xts_decrypt(const unsigned char *in, unsigned char *out, # elif defined(OPENSSL_CPUID_OBJ) && defined(__riscv) && __riscv_xlen == 64 /* RISC-V 64 support */ # include "riscv_arch.h" -# define RV64I_ZKND_ZKNE_CAPABLE (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) int rv64i_zkne_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key); @@ -447,8 +446,6 @@ void rv64i_zknd_decrypt(const unsigned char *in, unsigned char *out, # elif defined(OPENSSL_CPUID_OBJ) && defined(__riscv) && __riscv_xlen == 32 /* RISC-V 32 support */ # include "riscv_arch.h" -# define RV32I_ZKND_ZKNE_CAPABLE (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) -# define RV32I_ZBKB_ZKND_ZKNE_CAPABLE (RV32I_ZKND_ZKNE_CAPABLE && RISCV_HAS_ZBKB()) int rv32i_zkne_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/asn1.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/asn1.h index ec76ae6f..36af1d76 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/asn1.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/asn1.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -142,8 +142,12 @@ X509_ALGOR *ossl_x509_algor_mgf1_decode(X509_ALGOR *alg); int ossl_x509_algor_md_to_mgf1(X509_ALGOR **palg, const EVP_MD *mgf1md); int ossl_asn1_time_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); -EVP_PKEY * ossl_d2i_PrivateKey_legacy(int keytype, EVP_PKEY **a, - const unsigned char **pp, long length, - OSSL_LIB_CTX *libctx, const char *propq); +EVP_PKEY *ossl_d2i_PrivateKey_legacy(int keytype, EVP_PKEY **a, + const unsigned char **pp, long length, + OSSL_LIB_CTX *libctx, const char *propq); +X509_ALGOR *ossl_X509_ALGOR_from_nid(int nid, int ptype, void *pval); + +time_t ossl_asn1_string_to_time_t(const char *asn1_string); +void ossl_asn1_string_set_bits_left(ASN1_STRING *str, unsigned int num); #endif /* ndef OSSL_CRYPTO_ASN1_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bioerr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bioerr.h index a0c06099..e38b981a 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bioerr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bioerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bn.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bn.h index 00544d9d..33f979ce 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bn.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/bn.h @@ -116,4 +116,13 @@ OSSL_LIB_CTX *ossl_bn_get_libctx(BN_CTX *ctx); extern const BIGNUM ossl_bn_inv_sqrt_2; +#if defined(OPENSSL_SYS_LINUX) && !defined(FIPS_MODULE) && defined (__s390x__) +# define S390X_MOD_EXP +#endif + +int s390x_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int s390x_crt(BIGNUM *r, const BIGNUM *i, const BIGNUM *p, const BIGNUM *q, + const BIGNUM *dmp, const BIGNUM *dmq, const BIGNUM *iqmp); + #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/cmserr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/cmserr.h index 1de2f9c7..a7fcf11f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/cmserr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/cmserr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/context.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/context.h index 8ad16834..7369a730 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/context.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/context.h @@ -24,6 +24,9 @@ void *ossl_rand_crng_ctx_new(OSSL_LIB_CTX *); int ossl_thread_register_fips(OSSL_LIB_CTX *); void *ossl_thread_event_ctx_new(OSSL_LIB_CTX *); void *ossl_fips_prov_ossl_ctx_new(OSSL_LIB_CTX *); +#if defined(OPENSSL_THREADS) +void *ossl_threads_ctx_new(OSSL_LIB_CTX *); +#endif void ossl_provider_store_free(void *); void ossl_property_string_data_free(void *); @@ -40,3 +43,6 @@ void ossl_rand_crng_ctx_free(void *); void ossl_thread_event_ctx_free(void *); void ossl_fips_prov_ossl_ctx_free(void *); void ossl_release_default_drbg_ctx(void); +#if defined(OPENSSL_THREADS) +void ossl_threads_ctx_free(void *); +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/decoder.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/decoder.h index 6b5ee56a..a0d5de65 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/decoder.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/decoder.h @@ -1,5 +1,5 @@ /* - * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,16 +25,16 @@ void *ossl_decoder_from_algorithm(int id, const OSSL_ALGORITHM *algodef, OSSL_DECODER_INSTANCE * ossl_decoder_instance_new(OSSL_DECODER *decoder, void *decoderctx); void ossl_decoder_instance_free(OSSL_DECODER_INSTANCE *decoder_inst); +OSSL_DECODER_INSTANCE *ossl_decoder_instance_dup(const OSSL_DECODER_INSTANCE *src); int ossl_decoder_ctx_add_decoder_inst(OSSL_DECODER_CTX *ctx, OSSL_DECODER_INSTANCE *di); -int ossl_decoder_ctx_setup_for_pkey(OSSL_DECODER_CTX *ctx, - EVP_PKEY **pkey, const char *keytype, - OSSL_LIB_CTX *libctx, - const char *propquery); - int ossl_decoder_get_number(const OSSL_DECODER *encoder); int ossl_decoder_store_cache_flush(OSSL_LIB_CTX *libctx); int ossl_decoder_store_remove_all_provided(const OSSL_PROVIDER *prov); +void *ossl_decoder_cache_new(OSSL_LIB_CTX *ctx); +void ossl_decoder_cache_free(void *vcache); +int ossl_decoder_cache_flush(OSSL_LIB_CTX *libctx); + #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dherr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dherr.h index bb24d131..519327f7 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dherr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dherr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dsa.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dsa.h index 260c30fa..85d92a18 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dsa.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/dsa.h @@ -26,7 +26,9 @@ int ossl_dsa_generate_ffc_parameters(DSA *dsa, int type, int pbits, int qbits, BN_GENCB *cb); int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen, - unsigned char *sig, unsigned int *siglen, DSA *dsa); + unsigned char *sig, unsigned int *siglen, DSA *dsa, + unsigned int nonce_type, const char *digestname, + OSSL_LIB_CTX *libctx, const char *propq); FFC_PARAMS *ossl_dsa_get0_params(DSA *dsa); int ossl_dsa_ffc_params_fromdata(DSA *dsa, const OSSL_PARAM params[]); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ec.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ec.h index 62163b31..da85a7bd 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ec.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ec.h @@ -95,6 +95,12 @@ char *ossl_ec_pt_format_id2name(int id); char *ossl_ec_check_group_type_id2name(int flags); int ossl_ec_set_check_group_type_from_name(EC_KEY *ec, const char *name); - +int ossl_ec_generate_key_dhkem(EC_KEY *eckey, + const unsigned char *ikm, size_t ikmlen); +int ossl_ecdsa_deterministic_sign(const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, + EC_KEY *eckey, unsigned int nonce_type, + const char *digestname, + OSSL_LIB_CTX *libctx, const char *propq); # endif /* OPENSSL_NO_EC */ #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ecx.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ecx.h index 48b95fa5..f35b875f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ecx.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/ecx.h @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -15,7 +15,7 @@ # include -# ifndef OPENSSL_NO_EC +# ifndef OPENSSL_NO_ECX # include # include @@ -72,7 +72,6 @@ struct ecx_key_st { size_t keylen; ECX_KEY_TYPE type; CRYPTO_REF_COUNT references; - CRYPTO_RWLOCK *lock; }; size_t ossl_ecx_key_length(ECX_KEY_TYPE type); @@ -83,6 +82,9 @@ unsigned char *ossl_ecx_key_allocate_privkey(ECX_KEY *key); void ossl_ecx_key_free(ECX_KEY *key); int ossl_ecx_key_up_ref(ECX_KEY *key); ECX_KEY *ossl_ecx_key_dup(const ECX_KEY *key, int selection); +int ossl_ecx_compute_key(ECX_KEY *peer, ECX_KEY *priv, size_t keylen, + unsigned char *secret, size_t *secretlen, + size_t outlen); int ossl_x25519(uint8_t out_shared_key[32], const uint8_t private_key[32], const uint8_t peer_public_value[32]); @@ -94,27 +96,33 @@ ossl_ed25519_public_from_private(OSSL_LIB_CTX *ctx, uint8_t out_public_key[32], const uint8_t private_key[32], const char *propq); int -ossl_ed25519_sign(uint8_t *out_sig, const uint8_t *message, size_t message_len, +ossl_ed25519_sign(uint8_t *out_sig, const uint8_t *tbs, size_t tbs_len, const uint8_t public_key[32], const uint8_t private_key[32], + const uint8_t dom2flag, const uint8_t phflag, const uint8_t csflag, + const uint8_t *context, size_t context_len, OSSL_LIB_CTX *libctx, const char *propq); int -ossl_ed25519_verify(const uint8_t *message, size_t message_len, +ossl_ed25519_verify(const uint8_t *tbs, size_t tbs_len, const uint8_t signature[64], const uint8_t public_key[32], + const uint8_t dom2flag, const uint8_t phflag, const uint8_t csflag, + const uint8_t *context, size_t context_len, OSSL_LIB_CTX *libctx, const char *propq); - int ossl_ed448_public_from_private(OSSL_LIB_CTX *ctx, uint8_t out_public_key[57], const uint8_t private_key[57], const char *propq); int -ossl_ed448_sign(OSSL_LIB_CTX *ctx, uint8_t *out_sig, const uint8_t *message, - size_t message_len, const uint8_t public_key[57], - const uint8_t private_key[57], const uint8_t *context, - size_t context_len, const char *propq); +ossl_ed448_sign(OSSL_LIB_CTX *ctx, uint8_t *out_sig, + const uint8_t *message, size_t message_len, + const uint8_t public_key[57], const uint8_t private_key[57], + const uint8_t *context, size_t context_len, + const uint8_t phflag, const char *propq); int -ossl_ed448_verify(OSSL_LIB_CTX *ctx, const uint8_t *message, size_t message_len, +ossl_ed448_verify(OSSL_LIB_CTX *ctx, + const uint8_t *message, size_t message_len, const uint8_t signature[114], const uint8_t public_key[57], - const uint8_t *context, size_t context_len, const char *propq); + const uint8_t *context, size_t context_len, + const uint8_t phflag, const char *propq); int ossl_x448(uint8_t out_shared_key[56], const uint8_t private_key[56], @@ -146,5 +154,5 @@ ECX_KEY *ossl_evp_pkey_get1_X25519(EVP_PKEY *pkey); ECX_KEY *ossl_evp_pkey_get1_X448(EVP_PKEY *pkey); ECX_KEY *ossl_evp_pkey_get1_ED25519(EVP_PKEY *pkey); ECX_KEY *ossl_evp_pkey_get1_ED448(EVP_PKEY *pkey); -# endif /* OPENSSL_NO_EC */ +# endif /* OPENSSL_NO_ECX */ #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/encoder.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/encoder.h index 5c53bbea..6240438d 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/encoder.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/encoder.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evp.h index a0fff7fd..34cea2f9 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evp.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evp.h @@ -16,11 +16,21 @@ # include "internal/refcount.h" # include "crypto/ecx.h" +/* + * Default PKCS5 PBE KDF salt lengths + * In RFC 8018, PBE1 uses 8 bytes (64 bits) for its salt length. + * It also specifies to use at least 8 bytes for PBES2. + * The NIST requirement for PBKDF2 is 128 bits so we use this as the + * default for PBE2 (scrypt and HKDF2) + */ +# define PKCS5_DEFAULT_PBE1_SALT_LEN PKCS5_SALT_LEN +# define PKCS5_DEFAULT_PBE2_SALT_LEN 16 /* * Don't free up md_ctx->pctx in EVP_MD_CTX_reset, use the reserved flag * values in evp.h */ #define EVP_MD_CTX_FLAG_KEEP_PKEY_CTX 0x0400 +#define EVP_MD_CTX_FLAG_FINALISED 0x0800 #define evp_pkey_ctx_is_legacy(ctx) \ ((ctx)->keymgmt == NULL) @@ -203,7 +213,6 @@ struct evp_mac_st { const char *description; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_mac_newctx_fn *newctx; OSSL_FUNC_mac_dupctx_fn *dupctx; @@ -225,7 +234,6 @@ struct evp_kdf_st { char *type_name; const char *description; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_kdf_newctx_fn *newctx; OSSL_FUNC_kdf_dupctx_fn *dupctx; @@ -270,7 +278,6 @@ struct evp_md_st { const char *description; OSSL_PROVIDER *prov; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_digest_newctx_fn *newctx; OSSL_FUNC_digest_init_fn *dinit; OSSL_FUNC_digest_update_fn *dupdate; @@ -326,7 +333,6 @@ struct evp_cipher_st { const char *description; OSSL_PROVIDER *prov; CRYPTO_REF_COUNT refcnt; - CRYPTO_RWLOCK *lock; OSSL_FUNC_cipher_newctx_fn *newctx; OSSL_FUNC_cipher_encrypt_init_fn *einit; OSSL_FUNC_cipher_decrypt_init_fn *dinit; @@ -646,7 +652,9 @@ union legacy_pkey_st { # endif # ifndef OPENSSL_NO_EC struct ec_key_st *ec; /* ECC */ +# ifndef OPENSSL_NO_ECX ECX_KEY *ecx; /* X25519, X448, Ed25519, Ed448 */ +# endif # endif }; @@ -784,7 +792,7 @@ void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt, OP_CACHE_ELEM *evp_keymgmt_util_find_operation_cache(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt, int selection); -int evp_keymgmt_util_clear_operation_cache(EVP_PKEY *pk, int locking); +int evp_keymgmt_util_clear_operation_cache(EVP_PKEY *pk); int evp_keymgmt_util_cache_keydata(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt, void *keydata, int selection); void evp_keymgmt_util_cache_keyinfo(EVP_PKEY *pk); @@ -813,7 +821,7 @@ int evp_keymgmt_set_params(const EVP_KEYMGMT *keymgmt, void *evp_keymgmt_gen_init(const EVP_KEYMGMT *keymgmt, int selection, const OSSL_PARAM params[]); int evp_keymgmt_gen_set_template(const EVP_KEYMGMT *keymgmt, void *genctx, - void *template); + void *templ); int evp_keymgmt_gen_set_params(const EVP_KEYMGMT *keymgmt, void *genctx, const OSSL_PARAM params[]); void *evp_keymgmt_gen(const EVP_KEYMGMT *keymgmt, void *genctx, @@ -892,10 +900,6 @@ EVP_MD_CTX *evp_md_ctx_new_ex(EVP_PKEY *pkey, const ASN1_OCTET_STRING *id, int evp_pkey_name2type(const char *name); const char *evp_pkey_type2name(int type); -int evp_pkey_ctx_set1_id_prov(EVP_PKEY_CTX *ctx, const void *id, int len); -int evp_pkey_ctx_get1_id_prov(EVP_PKEY_CTX *ctx, void *id); -int evp_pkey_ctx_get1_id_len_prov(EVP_PKEY_CTX *ctx, size_t *id_len); - int evp_pkey_ctx_use_cached_data(EVP_PKEY_CTX *ctx); # endif /* !defined(FIPS_MODULE) */ @@ -959,4 +963,8 @@ void evp_rand_clear_seed(EVP_RAND_CTX *ctx, unsigned char *buffer, size_t b_len); int evp_signature_get_number(const EVP_SIGNATURE *signature); +int evp_pkey_decrypt_alloc(EVP_PKEY_CTX *ctx, unsigned char **outp, + size_t *outlenp, size_t expected_outlen, + const unsigned char *in, size_t inlen); + #endif /* OSSL_CRYPTO_EVP_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evperr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evperr.h index d90ba83f..4a001107 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evperr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/evperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/md32_common.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/md32_common.h index 966e2684..46214f32 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/md32_common.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/md32_common.h @@ -63,37 +63,41 @@ * #define HASH_BLOCK_DATA_ORDER md5_block_data_order */ -#include +#ifndef OSSL_CRYPTO_MD32_COMMON_H +# define OSSL_CRYPTO_MD32_COMMON_H +# pragma once -#if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) -# error "DATA_ORDER must be defined!" -#endif +# include -#ifndef HASH_CBLOCK -# error "HASH_CBLOCK must be defined!" -#endif -#ifndef HASH_LONG -# error "HASH_LONG must be defined!" -#endif -#ifndef HASH_CTX -# error "HASH_CTX must be defined!" -#endif +# if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# error "DATA_ORDER must be defined!" +# endif -#ifndef HASH_UPDATE -# error "HASH_UPDATE must be defined!" -#endif -#ifndef HASH_TRANSFORM -# error "HASH_TRANSFORM must be defined!" -#endif -#ifndef HASH_FINAL -# error "HASH_FINAL must be defined!" -#endif +# ifndef HASH_CBLOCK +# error "HASH_CBLOCK must be defined!" +# endif +# ifndef HASH_LONG +# error "HASH_LONG must be defined!" +# endif +# ifndef HASH_CTX +# error "HASH_CTX must be defined!" +# endif -#ifndef HASH_BLOCK_DATA_ORDER -# error "HASH_BLOCK_DATA_ORDER must be defined!" -#endif +# ifndef HASH_UPDATE +# error "HASH_UPDATE must be defined!" +# endif +# ifndef HASH_TRANSFORM +# error "HASH_TRANSFORM must be defined!" +# endif +# ifndef HASH_FINAL +# error "HASH_FINAL must be defined!" +# endif -#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n)))) +# ifndef HASH_BLOCK_DATA_ORDER +# error "HASH_BLOCK_DATA_ORDER must be defined!" +# endif + +# define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n)))) #ifndef PEDANTIC # if defined(__GNUC__) && __GNUC__>=2 && \ @@ -117,31 +121,31 @@ # endif #endif -#if defined(DATA_ORDER_IS_BIG_ENDIAN) +# if defined(DATA_ORDER_IS_BIG_ENDIAN) -# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ +# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++)))<<24), \ l|=(((unsigned long)(*((c)++)))<<16), \ l|=(((unsigned long)(*((c)++)))<< 8), \ l|=(((unsigned long)(*((c)++))) ) ) -# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ +# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ *((c)++)=(unsigned char)(((l) )&0xff), \ l) -#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) -# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \ +# define HOST_c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \ l|=(((unsigned long)(*((c)++)))<< 8), \ l|=(((unsigned long)(*((c)++)))<<16), \ l|=(((unsigned long)(*((c)++)))<<24) ) -# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ +# define HOST_l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ *((c)++)=(unsigned char)(((l)>>16)&0xff), \ *((c)++)=(unsigned char)(((l)>>24)&0xff), \ l) -#endif +# endif /* * Time for some action :-) @@ -226,30 +230,30 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c) memset(p + n, 0, HASH_CBLOCK - 8 - n); p += HASH_CBLOCK - 8; -#if defined(DATA_ORDER_IS_BIG_ENDIAN) +# if defined(DATA_ORDER_IS_BIG_ENDIAN) (void)HOST_l2c(c->Nh, p); (void)HOST_l2c(c->Nl, p); -#elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) +# elif defined(DATA_ORDER_IS_LITTLE_ENDIAN) (void)HOST_l2c(c->Nl, p); (void)HOST_l2c(c->Nh, p); -#endif +# endif p -= HASH_CBLOCK; HASH_BLOCK_DATA_ORDER(c, p, 1); c->num = 0; OPENSSL_cleanse(p, HASH_CBLOCK); -#ifndef HASH_MAKE_STRING -# error "HASH_MAKE_STRING must be defined!" -#else +# ifndef HASH_MAKE_STRING +# error "HASH_MAKE_STRING must be defined!" +# else HASH_MAKE_STRING(c, md); -#endif +# endif return 1; } -#ifndef MD32_REG_T -# if defined(__alpha) || defined(__sparcv9) || defined(__mips) -# define MD32_REG_T long +# ifndef MD32_REG_T +# if defined(__alpha) || defined(__sparcv9) || defined(__mips) +# define MD32_REG_T long /* * This comment was originally written for MD5, which is why it * discusses A-D. But it basically applies to all 32-bit digests, @@ -266,13 +270,15 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c) * Well, to be honest it should say that this *prevents* * performance degradation. */ -# else +# else /* * Above is not absolute and there are LP64 compilers that * generate better code if MD32_REG_T is defined int. The above * pre-processor condition reflects the circumstances under which * the conclusion was made and is subject to further extension. */ -# define MD32_REG_T int +# define MD32_REG_T int +# endif # endif + #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/modes.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/modes.h index 573e1197..d03ca83d 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/modes.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/modes.h @@ -138,6 +138,12 @@ struct gcm128_context { #endif }; +/* GHASH functions */ +void ossl_gcm_init_4bit(u128 Htable[16], const u64 H[2]); +void ossl_gcm_ghash_4bit(u64 Xi[2], const u128 Htable[16], + const u8 *inp, size_t len); +void ossl_gcm_gmult_4bit(u64 Xi[2], const u128 Htable[16]); + /* * The maximum permitted number of cipher blocks per data unit in XTS mode. * Reference IEEE Std 1619-2018. @@ -149,6 +155,12 @@ struct xts128_context { block128_f block1, block2; }; +/* XTS mode for SM4 algorithm specified by GB/T 17964-2021 */ +int ossl_crypto_xts128gb_encrypt(const XTS128_CONTEXT *ctx, + const unsigned char iv[16], + const unsigned char *inp, unsigned char *out, + size_t len, int enc); + struct ccm128_context { union { u64 u[2]; diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/pkcs12err.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/pkcs12err.h index 662f412e..114971c6 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/pkcs12err.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/pkcs12err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/punycode.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/punycode.h index 4c6e49f5..2e1c85c1 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/punycode.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/punycode.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -22,6 +22,4 @@ int ossl_punycode_decode ( int ossl_a2ulabel(const char *in, char *out, size_t outlen); -int ossl_a2ucompare(const char *a, const char *u); - #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rand.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rand.h index 215b3b7a..d375c2f9 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rand.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rand.h @@ -140,4 +140,15 @@ EVP_RAND_CTX *ossl_rand_get0_private_noncreating(OSSL_LIB_CTX *ctx); # else EVP_RAND_CTX *ossl_rand_get0_seed_noncreating(OSSL_LIB_CTX *ctx); # endif + +/* Generate a uniformly distributed random integer in the interval [0, upper) */ +uint32_t ossl_rand_uniform_uint32(OSSL_LIB_CTX *ctx, uint32_t upper, int *err); + +/* + * Generate a uniformly distributed random integer in the interval + * [lower, upper). + */ +uint32_t ossl_rand_range_uint32(OSSL_LIB_CTX *ctx, uint32_t lower, uint32_t upper, + int *err); + #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/riscv_arch.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/riscv_arch.h index 89a40bea..95185841 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/riscv_arch.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/riscv_arch.h @@ -1,5 +1,5 @@ /* - * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -56,4 +56,9 @@ static const size_t kRISCVNumCaps = # include "riscv_arch.def" ; +/* Extension combination tests. */ +#define RISCV_HAS_ZBB_AND_ZBC() (RISCV_HAS_ZBB() && RISCV_HAS_ZBC()) +#define RISCV_HAS_ZBKB_AND_ZKND_AND_ZKNE() (RISCV_HAS_ZBKB() && RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) +#define RISCV_HAS_ZKND_AND_ZKNE() (RISCV_HAS_ZKND() && RISCV_HAS_ZKNE()) + #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rsa.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rsa.h index 949873d0..8eddc168 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rsa.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/rsa.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -34,8 +34,6 @@ int ossl_rsa_pss_params_30_copy(RSA_PSS_PARAMS_30 *to, int ossl_rsa_pss_params_30_is_unrestricted(const RSA_PSS_PARAMS_30 *rsa_pss_params); int ossl_rsa_pss_params_30_set_hashalg(RSA_PSS_PARAMS_30 *rsa_pss_params, int hashalg_nid); -int ossl_rsa_pss_params_30_set_maskgenalg(RSA_PSS_PARAMS_30 *rsa_pss_params, - int maskgenalg_nid); int ossl_rsa_pss_params_30_set_maskgenhashalg(RSA_PSS_PARAMS_30 *rsa_pss_params, int maskgenhashalg_nid); int ossl_rsa_pss_params_30_set_saltlen(RSA_PSS_PARAMS_30 *rsa_pss_params, @@ -83,6 +81,10 @@ int ossl_rsa_param_decode(RSA *rsa, const X509_ALGOR *alg); RSA *ossl_rsa_key_from_pkcs8(const PKCS8_PRIV_KEY_INFO *p8inf, OSSL_LIB_CTX *libctx, const char *propq); +int ossl_rsa_padding_check_PKCS1_type_2(OSSL_LIB_CTX *ctx, + unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, unsigned char *kdk); int ossl_rsa_padding_check_PKCS1_type_2_TLS(OSSL_LIB_CTX *ctx, unsigned char *to, size_t tlen, const unsigned char *from, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sha.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sha.h index 64305d17..99bcf0ff 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sha.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sha.h @@ -1,5 +1,5 @@ /* - * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -14,6 +14,7 @@ # include +int ossl_sha256_192_init(SHA256_CTX *c); int sha512_224_init(SHA512_CTX *); int sha512_256_init(SHA512_CTX *); int ossl_sha1_ctrl(SHA_CTX *ctx, int cmd, int mslen, void *ms); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sm4_platform.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sm4_platform.h index 6cc1dfa5..cc4f5142 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sm4_platform.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/sm4_platform.h @@ -12,7 +12,7 @@ # pragma once # if defined(OPENSSL_CPUID_OBJ) -# if defined(__aarch64__) +# if defined(__aarch64__) || defined (_M_ARM64) # include "arm_arch.h" extern unsigned int OPENSSL_arm_midr; static inline int vpsm4_capable(void) @@ -21,8 +21,14 @@ static inline int vpsm4_capable(void) (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_V1) || MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, ARM_CPU_IMP_ARM, ARM_CPU_PART_N1)); } +static inline int vpsm4_ex_capable(void) +{ + return (OPENSSL_armcap_P & ARMV8_CPUID) && + (MIDR_IS_CPU_MODEL(OPENSSL_arm_midr, HISI_CPU_IMP, HISI_CPU_PART_KP920)); +} # if defined(VPSM4_ASM) # define VPSM4_CAPABLE vpsm4_capable() +# define VPSM4_EX_CAPABLE vpsm4_ex_capable() # endif # define HWSM4_CAPABLE (OPENSSL_armcap_P & ARMV8_SM4) # define HWSM4_set_encrypt_key sm4_v8_set_encrypt_key @@ -53,7 +59,7 @@ void HWSM4_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, const unsigned char ivec[16]); # endif /* HWSM4_CAPABLE */ -#ifdef VPSM4_CAPABLE +# ifdef VPSM4_CAPABLE int vpsm4_set_encrypt_key(const unsigned char *userKey, SM4_KEY *key); int vpsm4_set_decrypt_key(const unsigned char *userKey, SM4_KEY *key); void vpsm4_encrypt(const unsigned char *in, unsigned char *out, @@ -69,7 +75,37 @@ void vpsm4_ecb_encrypt(const unsigned char *in, unsigned char *out, void vpsm4_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, size_t len, const void *key, const unsigned char ivec[16]); +void vpsm4_xts_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, const SM4_KEY *key2, + const unsigned char ivec[16], const int enc); +void vpsm4_xts_encrypt_gb(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, const SM4_KEY *key2, + const unsigned char ivec[16], const int enc); # endif /* VPSM4_CAPABLE */ +# ifdef VPSM4_EX_CAPABLE +int vpsm4_ex_set_encrypt_key(const unsigned char *userKey, SM4_KEY *key); +int vpsm4_ex_set_decrypt_key(const unsigned char *userKey, SM4_KEY *key); +void vpsm4_ex_encrypt(const unsigned char *in, unsigned char *out, + const SM4_KEY *key); +void vpsm4_ex_decrypt(const unsigned char *in, unsigned char *out, + const SM4_KEY *key); +void vpsm4_ex_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const SM4_KEY *key, + unsigned char *ivec, const int enc); +void vpsm4_ex_ecb_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const SM4_KEY *key, + const int enc); +void vpsm4_ex_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, + size_t len, const void *key, + const unsigned char ivec[16]); +void vpsm4_ex_xts_encrypt(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, const SM4_KEY *key2, + const unsigned char ivec[16], const int enc); +void vpsm4_ex_xts_encrypt_gb(const unsigned char *in, unsigned char *out, + size_t len, const SM4_KEY *key1, + const SM4_KEY *key2, const unsigned char ivec[16], + const int enc); +# endif /* VPSM4_EX_CAPABLE */ #endif /* OSSL_SM4_PLATFORM_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/store.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/store.h index 5645fc92..9b7be71a 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/store.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/store.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509.h index 631150b7..5765b9f7 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509.h @@ -278,6 +278,8 @@ struct x509_store_ctx_st { /* X509_STORE_CTX */ SSL_DANE *dane; /* signed via bare TA public key, rather than CA certificate */ int bare_ta_signed; + /* Raw Public Key */ + EVP_PKEY *rpk; OSSL_LIB_CTX *libctx; char *propq; @@ -309,7 +311,7 @@ struct x509_object_st { }; int ossl_a2i_ipadd(unsigned char *ipout, const char *ipasc); -int ossl_x509_set1_time(ASN1_TIME **ptm, const ASN1_TIME *tm); +int ossl_x509_set1_time(int *modified, ASN1_TIME **ptm, const ASN1_TIME *tm); int ossl_x509_print_ex_brief(BIO *bio, X509 *cert, unsigned long neg_cflags); int ossl_x509v3_cache_extensions(X509 *x); int ossl_x509_init_sig_info(X509 *x); @@ -334,7 +336,8 @@ int ossl_x509_PUBKEY_get0_libctx(OSSL_LIB_CTX **plibctx, const char **ppropq, ASN1_OCTET_STRING *ossl_x509_pubkey_hash(X509_PUBKEY *pubkey); X509_PUBKEY *ossl_d2i_X509_PUBKEY_INTERNAL(const unsigned char **pp, - long len, OSSL_LIB_CTX *libctx); + long len, OSSL_LIB_CTX *libctx, + const char *propq); void ossl_X509_PUBKEY_INTERNAL_free(X509_PUBKEY *xpub); RSA *ossl_d2i_RSA_PSS_PUBKEY(RSA **a, const unsigned char **pp, long length); @@ -364,6 +367,7 @@ int ossl_i2d_X448_PUBKEY(const ECX_KEY *a, unsigned char **pp); # endif /* OPENSSL_NO_EC */ EVP_PKEY *ossl_d2i_PUBKEY_legacy(EVP_PKEY **a, const unsigned char **pp, long length); +int ossl_x509_check_private_key(const EVP_PKEY *k, const EVP_PKEY *pkey); int x509v3_add_len_value_uchar(const char *name, const unsigned char *value, size_t vallen, STACK_OF(CONF_VALUE) **extlist); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509err.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509err.h index 0a67975b..c7c7d25e 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509err.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/crypto/x509err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/asn1.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/asn1.h index 3143e340..36dbe0fc 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/asn1.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/asn1.h @@ -11,6 +11,8 @@ # define OSSL_INTERNAL_ASN1_H # pragma once +# include + int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb); #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio.h index 547a73d0..9481f4c9 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio.h @@ -27,6 +27,8 @@ struct bio_method_st { int (*create) (BIO *); int (*destroy) (BIO *); long (*callback_ctrl) (BIO *, int, BIO_info_cb *); + int (*bsendmmsg) (BIO *, BIO_MSG *, size_t, size_t, uint64_t, size_t *); + int (*brecvmmsg) (BIO *, BIO_MSG *, size_t, size_t, uint64_t, size_t *); }; void bio_free_ex_data(BIO *bio); @@ -41,16 +43,20 @@ int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); # define BIO_CTRL_SET_KTLS 72 # define BIO_CTRL_SET_KTLS_TX_SEND_CTRL_MSG 74 # define BIO_CTRL_CLEAR_KTLS_TX_CTRL_MSG 75 +# define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 /* * This is used with socket BIOs: * BIO_FLAGS_KTLS_TX means we are using ktls with this BIO for sending. * BIO_FLAGS_KTLS_TX_CTRL_MSG means we are about to send a ctrl message next. * BIO_FLAGS_KTLS_RX means we are using ktls with this BIO for receiving. + * BIO_FLAGS_KTLS_TX_ZEROCOPY_SENDFILE means we are using the zerocopy mode with + * this BIO for sending using sendfile. */ # define BIO_FLAGS_KTLS_TX_CTRL_MSG 0x1000 # define BIO_FLAGS_KTLS_RX 0x2000 # define BIO_FLAGS_KTLS_TX 0x4000 +# define BIO_FLAGS_KTLS_TX_ZEROCOPY_SENDFILE 0x8000 /* KTLS related controls and flags */ # define BIO_set_ktls_flag(b, is_tx) \ @@ -63,6 +69,8 @@ int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); BIO_test_flags(b, BIO_FLAGS_KTLS_TX_CTRL_MSG) # define BIO_clear_ktls_ctrl_msg_flag(b) \ BIO_clear_flags(b, BIO_FLAGS_KTLS_TX_CTRL_MSG) +# define BIO_set_ktls_zerocopy_sendfile_flag(b) \ + BIO_set_flags(b, BIO_FLAGS_KTLS_TX_ZEROCOPY_SENDFILE) # define BIO_set_ktls(b, keyblob, is_tx) \ BIO_ctrl(b, BIO_CTRL_SET_KTLS, is_tx, keyblob) @@ -70,6 +78,8 @@ int bread_conv(BIO *bio, char *data, size_t datal, size_t *read); BIO_ctrl(b, BIO_CTRL_SET_KTLS_TX_SEND_CTRL_MSG, record_type, NULL) # define BIO_clear_ktls_ctrl_msg(b) \ BIO_ctrl(b, BIO_CTRL_CLEAR_KTLS_TX_CTRL_MSG, 0, NULL) +# define BIO_set_ktls_tx_zerocopy_sendfile(b) \ + BIO_ctrl(b, BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE, 0, NULL) /* Functions to allow the core to offer the CORE_BIO type to providers */ OSSL_CORE_BIO *ossl_core_bio_new_from_bio(BIO *bio); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_addr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_addr.h new file mode 100644 index 00000000..a6449b7e --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_addr.h @@ -0,0 +1,29 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_BIO_ADDR_H +# define OSSL_BIO_ADDR_H + +# include "internal/e_os.h" +# include "internal/sockets.h" + +# ifndef OPENSSL_NO_SOCK +union bio_addr_st { + struct sockaddr sa; +# if OPENSSL_USE_IPV6 + struct sockaddr_in6 s_in6; +# endif + struct sockaddr_in s_in; +# ifndef OPENSSL_NO_UNIX_SOCK + struct sockaddr_un s_un; +# endif +}; +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_tfo.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_tfo.h new file mode 100644 index 00000000..64c0d4c3 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/bio_tfo.h @@ -0,0 +1,151 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Contains definitions for simplifying the use of TCP Fast Open + * (RFC7413) in OpenSSL socket BIOs. + */ + +/* If a supported OS is added here, update test/bio_tfo_test.c */ +#if defined(TCP_FASTOPEN) && !defined(OPENSSL_NO_TFO) + +# if defined(OPENSSL_SYS_MACOSX) || defined(__FreeBSD__) +# include +# endif + +/* + * OSSL_TFO_SYSCTL is used to determine if TFO is supported by + * this kernel, and if supported, if it is enabled. This is more of + * a problem on FreeBSD 10.3 ~ 11.4, where TCP_FASTOPEN was defined, + * but not enabled by default in the kernel, and only for the server. + * Linux does not have sysctlbyname(), and the closest equivalent + * is to go into the /proc filesystem, but I'm not sure it's + * worthwhile. + * + * On MacOS and Linux: + * These operating systems use a single parameter to control TFO. + * The OSSL_TFO_CLIENT_FLAG and OSSL_TFO_SERVER_FLAGS are used to + * determine if TFO is enabled for the client and server respectively. + * + * OSSL_TFO_CLIENT_FLAG = 1 = client TFO enabled + * OSSL_TFO_SERVER_FLAG = 2 = server TFO enabled + * + * Such that: + * 0 = TFO disabled + * 3 = server and client TFO enabled + * + * macOS 10.14 and later support TFO. + * Linux kernel 3.6 added support for client TFO. + * Linux kernel 3.7 added support for server TFO. + * Linux kernel 3.13 enabled TFO by default. + * Linux kernel 4.11 added the TCP_FASTOPEN_CONNECT option. + * + * On FreeBSD: + * FreeBSD 10.3 ~ 11.4 uses a single sysctl for server enable. + * FreeBSD 12.0 and later uses separate sysctls for server and + * client enable. + * + * Some options are purposely NOT defined per-platform + * + * OSSL_TFO_SYSCTL + * Defined as a sysctlbyname() option to determine if + * TFO is enabled in the kernel (macOS, FreeBSD) + * + * OSSL_TFO_SERVER_SOCKOPT + * Defined to indicate the socket option used to enable + * TFO on a server socket (all) + * + * OSSL_TFO_SERVER_SOCKOPT_VALUE + * Value to be used with OSSL_TFO_SERVER_SOCKOPT + * + * OSSL_TFO_CONNECTX + * Use the connectx() function to make a client connection + * (macOS) + * + * OSSL_TFO_CLIENT_SOCKOPT + * Defined to indicate the socket option used to enable + * TFO on a client socket (FreeBSD, Linux 4.14 and later) + * + * OSSL_TFO_SENDTO + * Defined to indicate the sendto() message type to + * be used to initiate a TFO connection (FreeBSD, + * Linux pre-4.14) + * + * OSSL_TFO_DO_NOT_CONNECT + * Defined to skip calling connect() when creating a + * client socket (macOS, FreeBSD, Linux pre-4.14) + */ + +# if defined(OPENSSL_SYS_WINDOWS) +/* + * NO WINDOWS SUPPORT + * + * But this is what would be used on the server: + * + * define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN + * define OSSL_TFO_SERVER_SOCKOPT_VALUE 1 + * + * Still have to figure out client support + */ +# undef TCP_FASTOPEN +# endif + +/* NO VMS SUPPORT */ +# if defined(OPENSSL_SYS_VMS) +# undef TCP_FASTOPEN +# endif + +# if defined(OPENSSL_SYS_MACOSX) +# define OSSL_TFO_SYSCTL "net.inet.tcp.fastopen" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE 1 +# define OSSL_TFO_CONNECTX 1 +# define OSSL_TFO_DO_NOT_CONNECT 1 +# define OSSL_TFO_CLIENT_FLAG 1 +# define OSSL_TFO_SERVER_FLAG 2 +# endif + +# if defined(__FreeBSD__) +# if defined(TCP_FASTOPEN_PSK_LEN) +/* As of 12.0 these are the SYSCTLs */ +# define OSSL_TFO_SYSCTL_SERVER "net.inet.tcp.fastopen.server_enable" +# define OSSL_TFO_SYSCTL_CLIENT "net.inet.tcp.fastopen.client_enable" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE MAX_LISTEN +# define OSSL_TFO_CLIENT_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_DO_NOT_CONNECT 1 +# define OSSL_TFO_SENDTO 0 +/* These are the same because the sysctl are client/server-specific */ +# define OSSL_TFO_CLIENT_FLAG 1 +# define OSSL_TFO_SERVER_FLAG 1 +# else +/* 10.3 through 11.4 SYSCTL - ONLY SERVER SUPPORT */ +# define OSSL_TFO_SYSCTL "net.inet.tcp.fastopen.enabled" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE MAX_LISTEN +# define OSSL_TFO_SERVER_FLAG 1 +# endif +# endif + +# if defined(OPENSSL_SYS_LINUX) +/* OSSL_TFO_PROC not used, but of interest */ +# define OSSL_TFO_PROC "/proc/sys/net/ipv4/tcp_fastopen" +# define OSSL_TFO_SERVER_SOCKOPT TCP_FASTOPEN +# define OSSL_TFO_SERVER_SOCKOPT_VALUE MAX_LISTEN +# if defined(TCP_FASTOPEN_CONNECT) +# define OSSL_TFO_CLIENT_SOCKOPT TCP_FASTOPEN_CONNECT +# else +# define OSSL_TFO_SENDTO MSG_FASTOPEN +# define OSSL_TFO_DO_NOT_CONNECT 1 +# endif +# define OSSL_TFO_CLIENT_FLAG 1 +# define OSSL_TFO_SERVER_FLAG 2 +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/common.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/common.h new file mode 100644 index 00000000..15666f11 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/common.h @@ -0,0 +1,217 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_COMMON_H +# define OSSL_INTERNAL_COMMON_H +# pragma once + +# include +# include +# include "openssl/configuration.h" + +# include "internal/e_os.h" /* ossl_inline in many files */ +# include "internal/nelem.h" + +# if defined(__GNUC__) || defined(__clang__) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) x +# define unlikely(x) x +# endif + +# if defined(__GNUC__) || defined(__clang__) +# define ALIGN32 __attribute((aligned(32))) +# define ALIGN64 __attribute((aligned(64))) +# elif defined(_MSC_VER) +# define ALIGN32 __declspec(align(32)) +# define ALIGN64 __declspec(align(64)) +# else +# define ALIGN32 +# define ALIGN64 +# endif + +# ifdef NDEBUG +# define ossl_assert(x) ((x) != 0) +# else +__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, + const char *file, int line) +{ + if (!expr) + OPENSSL_die(exprstr, file, line); + + return expr; +} + +# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ + __FILE__, __LINE__) + +# endif + +/* Check if |pre|, which must be a string literal, is a prefix of |str| */ +#define HAS_PREFIX(str, pre) (strncmp(str, pre "", sizeof(pre) - 1) == 0) +/* As before, and if check succeeds, advance |str| past the prefix |pre| */ +#define CHECK_AND_SKIP_PREFIX(str, pre) \ + (HAS_PREFIX(str, pre) ? ((str) += sizeof(pre) - 1, 1) : 0) +/* Check if the string literal |p| is a case-insensitive prefix of |s| */ +#define HAS_CASE_PREFIX(s, p) (OPENSSL_strncasecmp(s, p "", sizeof(p) - 1) == 0) +/* As before, and if check succeeds, advance |str| past the prefix |pre| */ +#define CHECK_AND_SKIP_CASE_PREFIX(str, pre) \ + (HAS_CASE_PREFIX(str, pre) ? ((str) += sizeof(pre) - 1, 1) : 0) +/* Check if the string literal |suffix| is a case-insensitive suffix of |str| */ +#define HAS_CASE_SUFFIX(str, suffix) (strlen(str) < sizeof(suffix) - 1 ? 0 : \ + OPENSSL_strcasecmp(str + strlen(str) - sizeof(suffix) + 1, suffix "") == 0) + +/* + * Use this inside a union with the field that needs to be aligned to a + * reasonable boundary for the platform. The most pessimistic alignment + * of the listed types will be used by the compiler. + */ +# define OSSL_UNION_ALIGN \ + double align; \ + ossl_uintmax_t align_int; \ + void *align_ptr + +# define OPENSSL_CONF "openssl.cnf" + +# ifndef OPENSSL_SYS_VMS +# define X509_CERT_AREA OPENSSLDIR +# define X509_CERT_DIR OPENSSLDIR "/certs" +# define X509_CERT_FILE OPENSSLDIR "/cert.pem" +# define X509_PRIVATE_DIR OPENSSLDIR "/private" +# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" +# else +# define X509_CERT_AREA "OSSL$DATAROOT:[000000]" +# define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" +# define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" +# define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" +# define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" +# endif + +# define X509_CERT_DIR_EVP "SSL_CERT_DIR" +# define X509_CERT_FILE_EVP "SSL_CERT_FILE" +# define CTLOG_FILE_EVP "CTLOG_FILE" + +/* size of string representations */ +# define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) +# define HEX_SIZE(type) (sizeof(type)*2) + +# define c2l(c,l) (l = ((unsigned long)(*((c)++))) , \ + l|=(((unsigned long)(*((c)++)))<< 8), \ + l|=(((unsigned long)(*((c)++)))<<16), \ + l|=(((unsigned long)(*((c)++)))<<24)) + +/* NOTE - c is not incremented as per c2l */ +# define c2ln(c,l1,l2,n) { \ + c+=n; \ + l1=l2=0; \ + switch (n) { \ + case 8: l2 =((unsigned long)(*(--(c))))<<24; \ + case 7: l2|=((unsigned long)(*(--(c))))<<16; \ + case 6: l2|=((unsigned long)(*(--(c))))<< 8; \ + case 5: l2|=((unsigned long)(*(--(c)))); \ + case 4: l1 =((unsigned long)(*(--(c))))<<24; \ + case 3: l1|=((unsigned long)(*(--(c))))<<16; \ + case 2: l1|=((unsigned long)(*(--(c))))<< 8; \ + case 1: l1|=((unsigned long)(*(--(c)))); \ + } \ + } + +# define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>>24)&0xff)) + +# define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \ + l|=((unsigned long)(*((c)++)))<<16, \ + l|=((unsigned long)(*((c)++)))<< 8, \ + l|=((unsigned long)(*((c)++)))) + +# define n2l8(c,l) (l =((uint64_t)(*((c)++)))<<56, \ + l|=((uint64_t)(*((c)++)))<<48, \ + l|=((uint64_t)(*((c)++)))<<40, \ + l|=((uint64_t)(*((c)++)))<<32, \ + l|=((uint64_t)(*((c)++)))<<24, \ + l|=((uint64_t)(*((c)++)))<<16, \ + l|=((uint64_t)(*((c)++)))<< 8, \ + l|=((uint64_t)(*((c)++)))) + +# define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l) )&0xff)) + +# define l2n8(l,c) (*((c)++)=(unsigned char)(((l)>>56)&0xff), \ + *((c)++)=(unsigned char)(((l)>>48)&0xff), \ + *((c)++)=(unsigned char)(((l)>>40)&0xff), \ + *((c)++)=(unsigned char)(((l)>>32)&0xff), \ + *((c)++)=(unsigned char)(((l)>>24)&0xff), \ + *((c)++)=(unsigned char)(((l)>>16)&0xff), \ + *((c)++)=(unsigned char)(((l)>> 8)&0xff), \ + *((c)++)=(unsigned char)(((l) )&0xff)) + +/* NOTE - c is not incremented as per l2c */ +# define l2cn(l1,l2,c,n) { \ + c+=n; \ + switch (n) { \ + case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \ + case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \ + case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \ + case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \ + case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \ + case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \ + case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \ + case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \ + } \ + } + +# define n2s(c,s) ((s=(((unsigned int)((c)[0]))<< 8)| \ + (((unsigned int)((c)[1])) )),(c)+=2) +# define s2n(s,c) (((c)[0]=(unsigned char)(((s)>> 8)&0xff), \ + (c)[1]=(unsigned char)(((s) )&0xff)),(c)+=2) + +# define n2l3(c,l) ((l =(((unsigned long)((c)[0]))<<16)| \ + (((unsigned long)((c)[1]))<< 8)| \ + (((unsigned long)((c)[2])) )),(c)+=3) + +# define l2n3(l,c) (((c)[0]=(unsigned char)(((l)>>16)&0xff), \ + (c)[1]=(unsigned char)(((l)>> 8)&0xff), \ + (c)[2]=(unsigned char)(((l) )&0xff)),(c)+=3) + +static ossl_inline int ossl_ends_with_dirsep(const char *path) +{ + if (*path != '\0') + path += strlen(path) - 1; +# if defined __VMS + if (*path == ']' || *path == '>' || *path == ':') + return 1; +# elif defined _WIN32 + if (*path == '\\') + return 1; +# endif + return *path == '/'; +} + +static ossl_inline int ossl_is_absolute_path(const char *path) +{ +# if defined __VMS + if (strchr(path, ':') != NULL + || ((path[0] == '[' || path[0] == '<') + && path[1] != '.' && path[1] != '-' + && path[1] != ']' && path[1] != '>')) + return 1; +# elif defined _WIN32 + if (path[0] == '\\' + || (path[0] != '\0' && path[1] == ':')) + return 1; +# endif + return path[0] == '/'; +} + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/comp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/comp.h index 3ad86fc7..c48c29d5 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/comp.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/comp.h @@ -10,3 +10,5 @@ #include void ossl_comp_zlib_cleanup(void); +void ossl_comp_brotli_cleanup(void); +void ossl_comp_zstd_cleanup(void); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/cryptlib.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/cryptlib.h index ac50eb3b..64851fd8 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/cryptlib.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/cryptlib.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -11,9 +11,6 @@ # define OSSL_INTERNAL_CRYPTLIB_H # pragma once -# include -# include - # ifdef OPENSSL_USE_APPLINK # define BIO_FLAGS_UPLINK_INTERNAL 0x8000 # include "ms/uplink.h" @@ -21,39 +18,13 @@ # define BIO_FLAGS_UPLINK_INTERNAL 0 # endif +# include "internal/common.h" + # include # include # include # include # include -# include "internal/nelem.h" - -#ifdef NDEBUG -# define ossl_assert(x) ((x) != 0) -#else -__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, - const char *file, int line) -{ - if (!expr) - OPENSSL_die(exprstr, file, line); - - return expr; -} - -# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ - __FILE__, __LINE__) - -#endif - -/* - * Use this inside a union with the field that needs to be aligned to a - * reasonable boundary for the platform. The most pessimistic alignment - * of the listed types will be used by the compiler. - */ -# define OSSL_UNION_ALIGN \ - double align; \ - ossl_uintmax_t align_int; \ - void *align_ptr typedef struct ex_callback_st EX_CALLBACK; DEFINE_STACK_OF(EX_CALLBACK) @@ -61,30 +32,6 @@ DEFINE_STACK_OF(EX_CALLBACK) typedef struct mem_st MEM; DEFINE_LHASH_OF_EX(MEM); -# define OPENSSL_CONF "openssl.cnf" - -# ifndef OPENSSL_SYS_VMS -# define X509_CERT_AREA OPENSSLDIR -# define X509_CERT_DIR OPENSSLDIR "/certs" -# define X509_CERT_FILE OPENSSLDIR "/cert.pem" -# define X509_PRIVATE_DIR OPENSSLDIR "/private" -# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" -# else -# define X509_CERT_AREA "OSSL$DATAROOT:[000000]" -# define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" -# define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" -# define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" -# define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" -# endif - -# define X509_CERT_DIR_EVP "SSL_CERT_DIR" -# define X509_CERT_FILE_EVP "SSL_CERT_FILE" -# define CTLOG_FILE_EVP "CTLOG_FILE" - -/* size of string representations */ -# define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) -# define HEX_SIZE(type) (sizeof(type)*2) - void OPENSSL_cpuid_setup(void); #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ defined(__x86_64) || defined(__x86_64__) || \ @@ -168,7 +115,9 @@ typedef struct ossl_ex_data_global_st { # define OSSL_LIB_CTX_PROVIDER_CONF_INDEX 16 # define OSSL_LIB_CTX_BIO_CORE_INDEX 17 # define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18 -# define OSSL_LIB_CTX_MAX_INDEXES 19 +# define OSSL_LIB_CTX_THREAD_INDEX 19 +# define OSSL_LIB_CTX_DECODER_CACHE_INDEX 20 +# define OSSL_LIB_CTX_MAX_INDEXES 20 OSSL_LIB_CTX *ossl_lib_ctx_get_concrete(OSSL_LIB_CTX *ctx); int ossl_lib_ctx_is_default(OSSL_LIB_CTX *ctx); @@ -211,34 +160,4 @@ char *ossl_buf2hexstr_sep(const unsigned char *buf, long buflen, char sep); unsigned char *ossl_hexstr2buf_sep(const char *str, long *buflen, const char sep); -static ossl_inline int ossl_ends_with_dirsep(const char *path) -{ - if (*path != '\0') - path += strlen(path) - 1; -# if defined __VMS - if (*path == ']' || *path == '>' || *path == ':') - return 1; -# elif defined _WIN32 - if (*path == '\\') - return 1; -# endif - return *path == '/'; -} - -static ossl_inline int ossl_is_absolute_path(const char *path) -{ -# if defined __VMS - if (strchr(path, ':') != NULL - || ((path[0] == '[' || path[0] == '<') - && path[1] != '.' && path[1] != '-' - && path[1] != ']' && path[1] != '>')) - return 1; -# elif defined _WIN32 - if (path[0] == '\\' - || (path[0] != '\0' && path[1] == ':')) - return 1; -# endif - return path[0] == '/'; -} - #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/der.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/der.h index f23fabc2..8d6db8f0 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/der.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/der.h @@ -7,8 +7,12 @@ * https://www.openssl.org/source/license.html */ -#include -#include "internal/packet.h" +#ifndef OSSL_INTERNAL_DER_H +# define OSSL_INTERNAL_DER_H +# pragma once + +# include +# include "internal/packet.h" /* * NOTE: X.690 numbers the identifier octet bits 1 to 8. @@ -22,42 +26,42 @@ * These are only valid for the UNIVERSAL class. With the other classes, * these bits have a different meaning. */ -#define DER_P_EOC 0 /* BER End Of Contents tag */ -#define DER_P_BOOLEAN 1 -#define DER_P_INTEGER 2 -#define DER_P_BIT_STRING 3 -#define DER_P_OCTET_STRING 4 -#define DER_P_NULL 5 -#define DER_P_OBJECT 6 -#define DER_P_OBJECT_DESCRIPTOR 7 -#define DER_P_EXTERNAL 8 -#define DER_P_REAL 9 -#define DER_P_ENUMERATED 10 -#define DER_P_UTF8STRING 12 -#define DER_P_SEQUENCE 16 -#define DER_P_SET 17 -#define DER_P_NUMERICSTRING 18 -#define DER_P_PRINTABLESTRING 19 -#define DER_P_T61STRING 20 -#define DER_P_VIDEOTEXSTRING 21 -#define DER_P_IA5STRING 22 -#define DER_P_UTCTIME 23 -#define DER_P_GENERALIZEDTIME 24 -#define DER_P_GRAPHICSTRING 25 -#define DER_P_ISO64STRING 26 -#define DER_P_GENERALSTRING 27 -#define DER_P_UNIVERSALSTRING 28 -#define DER_P_BMPSTRING 30 +# define DER_P_EOC 0 /* BER End Of Contents tag */ +# define DER_P_BOOLEAN 1 +# define DER_P_INTEGER 2 +# define DER_P_BIT_STRING 3 +# define DER_P_OCTET_STRING 4 +# define DER_P_NULL 5 +# define DER_P_OBJECT 6 +# define DER_P_OBJECT_DESCRIPTOR 7 +# define DER_P_EXTERNAL 8 +# define DER_P_REAL 9 +# define DER_P_ENUMERATED 10 +# define DER_P_UTF8STRING 12 +# define DER_P_SEQUENCE 16 +# define DER_P_SET 17 +# define DER_P_NUMERICSTRING 18 +# define DER_P_PRINTABLESTRING 19 +# define DER_P_T61STRING 20 +# define DER_P_VIDEOTEXSTRING 21 +# define DER_P_IA5STRING 22 +# define DER_P_UTCTIME 23 +# define DER_P_GENERALIZEDTIME 24 +# define DER_P_GRAPHICSTRING 25 +# define DER_P_ISO64STRING 26 +# define DER_P_GENERALSTRING 27 +# define DER_P_UNIVERSALSTRING 28 +# define DER_P_BMPSTRING 30 /* DER Flags, occupying bit 6 in the DER identifier byte */ -#define DER_F_PRIMITIVE 0x00 -#define DER_F_CONSTRUCTED 0x20 +# define DER_F_PRIMITIVE 0x00 +# define DER_F_CONSTRUCTED 0x20 /* DER classes tags, occupying bits 7-8 in the DER identifier byte */ -#define DER_C_UNIVERSAL 0x00 -#define DER_C_APPLICATION 0x40 -#define DER_C_CONTEXT 0x80 -#define DER_C_PRIVATE 0xC0 +# define DER_C_UNIVERSAL 0x00 +# define DER_C_APPLICATION 0x40 +# define DER_C_CONTEXT 0x80 +# define DER_C_PRIVATE 0xC0 /* * Run-time constructors. @@ -67,7 +71,7 @@ */ /* This can be used for all items that don't have a context */ -#define DER_NO_CONTEXT -1 +# define DER_NO_CONTEXT -1 int ossl_DER_w_precompiled(WPACKET *pkt, int tag, const unsigned char *precompiled, @@ -86,3 +90,5 @@ int ossl_DER_w_octet_string_uint32(WPACKET *pkt, int tag, uint32_t value); */ int ossl_DER_w_begin_sequence(WPACKET *pkt, int tag); int ossl_DER_w_end_sequence(WPACKET *pkt, int tag); + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/deterministic_nonce.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/deterministic_nonce.h new file mode 100644 index 00000000..5f0313fe --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/deterministic_nonce.h @@ -0,0 +1,24 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_DETERMINISTIC_NONCE_H +# define OSSL_INTERNAL_DETERMINISTIC_NONCE_H +# pragma once + +# include + +int ossl_gen_deterministic_nonce_rfc6979(BIGNUM *out, const BIGNUM *q, + const BIGNUM *priv, + const unsigned char *message, + size_t message_len, + const char *digestname, + OSSL_LIB_CTX *libctx, + const char *propq); + +#endif /*OSSL_INTERNAL_DETERMINISTIC_NONCE_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/e_os.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/e_os.h index 7fdc3899..d1ed62e8 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/e_os.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/e_os.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -143,7 +143,7 @@ static __inline unsigned int _strlen31(const char *str) # undef stdin # undef stdout # undef stderr -FILE *__iob_func(); +FILE *__iob_func(void); # define stdin (&__iob_func()[0]) # define stdout (&__iob_func()[1]) # define stderr (&__iob_func()[2]) @@ -249,7 +249,7 @@ FILE *__iob_func(); /***********************************************/ # if defined(OPENSSL_SYS_WINDOWS) -# if (_MSC_VER >= 1310) && !defined(_WIN32_WCE) +# if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(_WIN32_WCE) # define open _open # define fdopen _fdopen # define close _close @@ -286,54 +286,6 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ -/* system-specific variants defining ossl_sleep() */ -#if defined(OPENSSL_SYS_UNIX) || defined(__DJGPP__) -# include -static ossl_inline void ossl_sleep(unsigned long millis) -{ -# ifdef OPENSSL_SYS_VXWORKS - struct timespec ts; - ts.tv_sec = (long int) (millis / 1000); - ts.tv_nsec = (long int) (millis % 1000) * 1000000ul; - nanosleep(&ts, NULL); -# elif defined(__TANDEM) -# if !defined(_REENTRANT) -# include - /* HPNS does not support usleep for non threaded apps */ - PROCESS_DELAY_(millis * 1000); -# elif defined(_SPT_MODEL_) -# include -# include - usleep(millis * 1000); -# else - usleep(millis * 1000); -# endif -# else - usleep(millis * 1000); -# endif -} -#elif defined(_WIN32) -# include -static ossl_inline void ossl_sleep(unsigned long millis) -{ - Sleep(millis); -} -#else -/* Fallback to a busy wait */ -static ossl_inline void ossl_sleep(unsigned long millis) -{ - struct timeval start, now; - unsigned long elapsedms; - - gettimeofday(&start, NULL); - do { - gettimeofday(&now, NULL); - elapsedms = (((now.tv_sec - start.tv_sec) * 1000000) - + now.tv_usec - start.tv_usec) / 1000; - } while (elapsedms < millis); -} -#endif /* defined OPENSSL_SYS_UNIX */ - /* ----------------------------- HP NonStop -------------------------------- */ /* Required to support platform variant without getpid() and pid_t. */ # if defined(__TANDEM) && defined(_GUARDIAN_TARGET) @@ -343,12 +295,12 @@ static ossl_inline void ossl_sleep(unsigned long millis) # define gethostbyname(name) gethostbyname((char*)name) # define ioctlsocket(a,b,c) ioctl(a,b,c) # ifdef NO_GETPID -inline int nssgetpid(); +inline int nssgetpid(void); # ifndef NSSGETPID_MACRO # define NSSGETPID_MACRO # include # include - inline int nssgetpid() + inline int nssgetpid(void) { short phandle[10]={0}; union pseudo_pid { diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/endian.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/endian.h index 8b34e03e..7d5a73b1 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/endian.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/endian.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -12,7 +12,7 @@ # pragma once /* - * IS_LITTLE_ENDIAN and IS_BIG_ENDIAN can be used to detect the endiannes + * IS_LITTLE_ENDIAN and IS_BIG_ENDIAN can be used to detect the endianness * at compile time. To use it, DECLARE_IS_ENDIAN must be used to declare * a variable. * diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/event_queue.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/event_queue.h new file mode 100644 index 00000000..bda1ee6a --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/event_queue.h @@ -0,0 +1,163 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_EVENT_QUEUE_H +# define OSSL_INTERNAL_EVENT_QUEUE_H +# pragma once + +# include "internal/priority_queue.h" +# include "internal/time.h" + +/* + * Opaque type holding an event. + */ +typedef struct ossl_event_st OSSL_EVENT; + +DEFINE_PRIORITY_QUEUE_OF(OSSL_EVENT); + +/* + * Public type representing an event queue, the underlying structure being + * opaque. + */ +typedef struct ossl_event_queue_st OSSL_EVENT_QUEUE; + +/* + * Public type representing a event queue entry. + * It is (internally) public so that it can be embedded into other structures, + * it should otherwise be treated as opaque. + */ +struct ossl_event_st { + uint32_t type; /* What type of event this is */ + uint32_t priority; /* What priority this event has */ + OSSL_TIME when; /* When the event is scheduled to happen */ + void *ctx; /* User argument passed to call backs */ + void *payload; /* Event specific data of unknown kind */ + size_t payload_size; /* Length (in bytes) of event specific data */ + + /* These fields are for internal use only */ + PRIORITY_QUEUE_OF(OSSL_EVENT) *queue; /* Queue containing this event */ + size_t ref; /* ID for this event */ + unsigned int flag_dynamic : 1; /* Malloced or not? */ +}; + +/* + * Utility function to populate an event structure and add it to the queue + */ +int ossl_event_queue_add(OSSL_EVENT_QUEUE *queue, OSSL_EVENT *event, + uint32_t type, uint32_t priority, + OSSL_TIME when, void *ctx, + void *payload, size_t payload_size); + +/* + * Utility functions to extract event fields + */ +static ossl_unused ossl_inline +uint32_t ossl_event_get_type(const OSSL_EVENT *event) +{ + return event->type; +} + +static ossl_unused ossl_inline +uint32_t ossl_event_get_priority(const OSSL_EVENT *event) +{ + return event->priority; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_event_get_when(const OSSL_EVENT *event) +{ + return event->when; +} + +static ossl_unused ossl_inline +void *ossl_event_get0_ctx(const OSSL_EVENT *event) +{ + return event->ctx; +} + +static ossl_unused ossl_inline +void *ossl_event_get0_payload(const OSSL_EVENT *event, size_t *length) +{ + if (length != NULL) + *length = event->payload_size; + return event->payload; +} + +/* + * Create and free a queue. + */ +OSSL_EVENT_QUEUE *ossl_event_queue_new(void); +void ossl_event_queue_free(OSSL_EVENT_QUEUE *queue); + +/* + * Schedule a new event into an event queue. + * + * The event parameters are taken from the function arguments. + * + * The function returns NULL on failure and the added event on success. + */ +OSSL_EVENT *ossl_event_queue_add_new(OSSL_EVENT_QUEUE *queue, + uint32_t type, uint32_t priority, + OSSL_TIME when, void *ctx, + void *payload, size_t payload_size) +; + +/* + * Schedule an event into an event queue. + * + * The event parameters are taken from the function arguments. + * + * The function returns 0 on failure and 1 on success. + */ +int ossl_event_queue_add(OSSL_EVENT_QUEUE *queue, OSSL_EVENT *event, + uint32_t type, uint32_t priority, + OSSL_TIME when, void *ctx, + void *payload, size_t payload_size); + +/* + * Delete an event from the queue. + * This will cause the early deletion function to be called if it is non-NULL. + * A pointer to the event structure is returned. + */ +int ossl_event_queue_remove(OSSL_EVENT_QUEUE *queue, OSSL_EVENT *event); + +/* + * Free a dynamic event. + * Is a NOP for a static event. + */ +void ossl_event_free(OSSL_EVENT *event); + +/* + * Return the time until the next event for the specified event, if the event's + * time is past, zero is returned. Once activated, the event reference becomes + * invalid and this function becomes undefined. + */ +OSSL_TIME ossl_event_time_until(const OSSL_EVENT *event); + +/* + * Return the time until the next event in the queue. + * If the next event is in the past, zero is returned. + */ +OSSL_TIME ossl_event_queue_time_until_next(const OSSL_EVENT_QUEUE *queue); + +/* + * Postpone an event to trigger at the specified time. + * If the event has triggered, this function's behaviour is undefined. + */ +int ossl_event_queue_postpone_until(OSSL_EVENT_QUEUE *queue, + OSSL_EVENT *event, + OSSL_TIME when); + +/* + * Return the next event to process. + */ +int ossl_event_queue_get1_next_event(OSSL_EVENT_QUEUE *queue, + OSSL_EVENT **event); + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ffc.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ffc.h index c4f09087..edd8381e 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ffc.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ffc.h @@ -58,8 +58,11 @@ # define FFC_CHECK_INVALID_Q_VALUE 0x00020 # define FFC_CHECK_INVALID_J_VALUE 0x00040 -# define FFC_CHECK_BAD_LN_PAIR 0x00080 -# define FFC_CHECK_INVALID_SEED_SIZE 0x00100 +/* + * 0x80, 0x100 reserved by include/openssl/dh.h with check bits that are not + * relevant for FFC. + */ + # define FFC_CHECK_MISSING_SEED_OR_COUNTER 0x00200 # define FFC_CHECK_INVALID_G 0x00400 # define FFC_CHECK_INVALID_PQ 0x00800 @@ -68,6 +71,8 @@ # define FFC_CHECK_Q_MISMATCH 0x04000 # define FFC_CHECK_G_MISMATCH 0x08000 # define FFC_CHECK_COUNTER_MISMATCH 0x10000 +# define FFC_CHECK_BAD_LN_PAIR 0x20000 +# define FFC_CHECK_INVALID_SEED_SIZE 0x40000 /* Validation Return codes */ # define FFC_ERROR_PUBKEY_TOO_SMALL 0x01 @@ -132,7 +137,7 @@ void ossl_ffc_params_set_h(FFC_PARAMS *params, int index); void ossl_ffc_params_set_flags(FFC_PARAMS *params, unsigned int flags); void ossl_ffc_params_enable_flags(FFC_PARAMS *params, unsigned int flags, int enable); -int ossl_ffc_set_digest(FFC_PARAMS *params, const char *alg, const char *props); +void ossl_ffc_set_digest(FFC_PARAMS *params, const char *alg, const char *props); int ossl_ffc_params_set_validate_params(FFC_PARAMS *params, const unsigned char *seed, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/hpke_util.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/hpke_util.h new file mode 100644 index 00000000..e1da5e05 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/hpke_util.h @@ -0,0 +1,100 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_HPKE_UTIL_H +# define OSSL_INTERNAL_HPKE_UTIL_H +# pragma once + +/* Constants from RFC 9180 Section 7.1 and 7.3 */ +# define OSSL_HPKE_MAX_SECRET 64 +# define OSSL_HPKE_MAX_PUBLIC 133 +# define OSSL_HPKE_MAX_PRIVATE 66 +# define OSSL_HPKE_MAX_KDF_INPUTLEN 64 + +/* + * max length of a base-nonce (the Nn field from OSSL_HPKE_AEAD_INFO), this + * is used for a local stack array size + */ +# define OSSL_HPKE_MAX_NONCELEN 12 + +/* + * @brief info about a KEM + * Used to store constants from Section 7.1 "Table 2 KEM IDs" + * and the bitmask for EC curves described in Section 7.1.3 DeriveKeyPair + */ +typedef struct { + uint16_t kem_id; /* code point for key encipherment method */ + const char *keytype; /* string form of algtype "EC"/"X25519"/"X448" */ + const char *groupname; /* string form of EC group for NIST curves */ + const char *mdname; /* hash alg name for the HKDF */ + size_t Nsecret; /* size of secrets */ + size_t Nenc; /* length of encapsulated key */ + size_t Npk; /* length of public key */ + size_t Nsk; /* length of raw private key */ + uint8_t bitmask; +} OSSL_HPKE_KEM_INFO; + +/* + * @brief info about a KDF + */ +typedef struct { + uint16_t kdf_id; /* code point for KDF */ + const char *mdname; /* hash alg name for the HKDF */ + size_t Nh; /* length of hash/extract output */ +} OSSL_HPKE_KDF_INFO; + +/* + * @brief info about an AEAD + */ +typedef struct { + uint16_t aead_id; /* code point for aead alg */ + const char *name; /* alg name */ + size_t taglen; /* aead tag len */ + size_t Nk; /* size of a key for this aead */ + size_t Nn; /* length of a nonce for this aead */ +} OSSL_HPKE_AEAD_INFO; + +const OSSL_HPKE_KEM_INFO *ossl_HPKE_KEM_INFO_find_curve(const char *curve); +const OSSL_HPKE_KEM_INFO *ossl_HPKE_KEM_INFO_find_id(uint16_t kemid); +const OSSL_HPKE_KEM_INFO *ossl_HPKE_KEM_INFO_find_random(OSSL_LIB_CTX *ctx); +const OSSL_HPKE_KDF_INFO *ossl_HPKE_KDF_INFO_find_id(uint16_t kdfid); +const OSSL_HPKE_KDF_INFO *ossl_HPKE_KDF_INFO_find_random(OSSL_LIB_CTX *ctx); +const OSSL_HPKE_AEAD_INFO *ossl_HPKE_AEAD_INFO_find_id(uint16_t aeadid); +const OSSL_HPKE_AEAD_INFO *ossl_HPKE_AEAD_INFO_find_random(OSSL_LIB_CTX *ctx); + +int ossl_hpke_kdf_extract(EVP_KDF_CTX *kctx, + unsigned char *prk, size_t prklen, + const unsigned char *salt, size_t saltlen, + const unsigned char *ikm, size_t ikmlen); + +int ossl_hpke_kdf_expand(EVP_KDF_CTX *kctx, + unsigned char *okm, size_t okmlen, + const unsigned char *prk, size_t prklen, + const unsigned char *info, size_t infolen); + +int ossl_hpke_labeled_extract(EVP_KDF_CTX *kctx, + unsigned char *prk, size_t prklen, + const unsigned char *salt, size_t saltlen, + const char *protocol_label, + const unsigned char *suiteid, size_t suiteidlen, + const char *label, + const unsigned char *ikm, size_t ikmlen); +int ossl_hpke_labeled_expand(EVP_KDF_CTX *kctx, + unsigned char *okm, size_t okmlen, + const unsigned char *prk, size_t prklen, + const char *protocol_label, + const unsigned char *suiteid, size_t suiteidlen, + const char *label, + const unsigned char *info, size_t infolen); + +EVP_KDF_CTX *ossl_kdf_ctx_create(const char *kdfname, const char *mdname, + OSSL_LIB_CTX *libctx, const char *propq); + +int ossl_hpke_str2suite(const char *suitestr, OSSL_HPKE_SUITE *suite); +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ktls.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ktls.h index 95492fd0..af27a325 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ktls.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ktls.h @@ -1,5 +1,5 @@ /* - * Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -40,6 +40,11 @@ # define OPENSSL_KTLS_AES_GCM_128 # define OPENSSL_KTLS_AES_GCM_256 # define OPENSSL_KTLS_TLS13 +# ifdef TLS_CHACHA20_IV_LEN +# ifndef OPENSSL_NO_CHACHA +# define OPENSSL_KTLS_CHACHA20_POLY1305 +# endif +# endif typedef struct tls_enable ktls_crypto_info_t; @@ -209,6 +214,13 @@ static ossl_inline ossl_ssize_t ktls_sendfile(int s, int fd, off_t off, # warning "Skipping Compilation of KTLS receive data path" # endif # endif +# if LINUX_VERSION_CODE < KERNEL_VERSION(5, 19, 0) +# define OPENSSL_NO_KTLS_ZC_TX +# ifndef PEDANTIC +# warning "KTLS requires Kernel Headers >= 5.19.0 for zerocopy sendfile" +# warning "Skipping Compilation of KTLS zerocopy sendfile" +# endif +# endif # define OPENSSL_KTLS_AES_GCM_128 # if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0) # define OPENSSL_KTLS_AES_GCM_256 @@ -288,6 +300,18 @@ static ossl_inline int ktls_start(int fd, ktls_crypto_info_t *crypto_info, crypto_info, crypto_info->tls_crypto_info_len) ? 0 : 1; } +static ossl_inline int ktls_enable_tx_zerocopy_sendfile(int fd) +{ +#ifndef OPENSSL_NO_KTLS_ZC_TX + int enable = 1; + + return setsockopt(fd, SOL_TLS, TLS_TX_ZEROCOPY_RO, + &enable, sizeof(enable)) ? 0 : 1; +#else + return 0; +#endif +} + /* * Send a TLS record using the crypto_info provided in ktls_start and use * record_type instead of the default SSL3_RT_APPLICATION_DATA. diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/list.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/list.h new file mode 100644 index 00000000..fdd356c4 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/list.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_LIST_H +# define OSSL_INTERNAL_LIST_H +# pragma once + +# include +# include + +# ifdef NDEBUG +# define OSSL_LIST_DBG(x) +# else +# define OSSL_LIST_DBG(x) x; +# endif + +/* Define a list structure */ +# define OSSL_LIST(name) OSSL_LIST_ ## name + +/* Define fields to include an element of a list */ +# define OSSL_LIST_MEMBER(name, type) \ + struct { \ + type *next, *prev; \ + OSSL_LIST_DBG(struct ossl_list_st_ ## name *list) \ + } ossl_list_ ## name + +# define DEFINE_LIST_OF(name, type) \ + typedef struct ossl_list_st_ ## name OSSL_LIST(name); \ + struct ossl_list_st_ ## name { \ + type *alpha, *omega; \ + size_t num_elems; \ + }; \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_init(OSSL_LIST(name) *list) \ + { \ + memset(list, 0, sizeof(*list)); \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_init_elem(type *elem) \ + { \ + memset(&elem->ossl_list_ ## name, 0, \ + sizeof(elem->ossl_list_ ## name)); \ + } \ + static ossl_unused ossl_inline int \ + ossl_list_##name##_is_empty(const OSSL_LIST(name) *list) \ + { \ + return list->num_elems == 0; \ + } \ + static ossl_unused ossl_inline size_t \ + ossl_list_##name##_num(const OSSL_LIST(name) *list) \ + { \ + return list->num_elems; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_head(const OSSL_LIST(name) *list) \ + { \ + assert(list->alpha == NULL \ + || list->alpha->ossl_list_ ## name.list == list); \ + return list->alpha; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_tail(const OSSL_LIST(name) *list) \ + { \ + assert(list->omega == NULL \ + || list->omega->ossl_list_ ## name.list == list); \ + return list->omega; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_next(const type *elem) \ + { \ + assert(elem->ossl_list_ ## name.next == NULL \ + || elem->ossl_list_ ## name.next \ + ->ossl_list_ ## name.prev == elem); \ + return elem->ossl_list_ ## name.next; \ + } \ + static ossl_unused ossl_inline type * \ + ossl_list_##name##_prev(const type *elem) \ + { \ + assert(elem->ossl_list_ ## name.prev == NULL \ + || elem->ossl_list_ ## name.prev \ + ->ossl_list_ ## name.next == elem); \ + return elem->ossl_list_ ## name.prev; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_remove(OSSL_LIST(name) *list, type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == list); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = NULL) \ + if (list->alpha == elem) \ + list->alpha = elem->ossl_list_ ## name.next; \ + if (list->omega == elem) \ + list->omega = elem->ossl_list_ ## name.prev; \ + if (elem->ossl_list_ ## name.prev != NULL) \ + elem->ossl_list_ ## name.prev->ossl_list_ ## name.next = \ + elem->ossl_list_ ## name.next; \ + if (elem->ossl_list_ ## name.next != NULL) \ + elem->ossl_list_ ## name.next->ossl_list_ ## name.prev = \ + elem->ossl_list_ ## name.prev; \ + list->num_elems--; \ + memset(&elem->ossl_list_ ## name, 0, \ + sizeof(elem->ossl_list_ ## name)); \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_head(OSSL_LIST(name) *list, type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + if (list->alpha != NULL) \ + list->alpha->ossl_list_ ## name.prev = elem; \ + elem->ossl_list_ ## name.next = list->alpha; \ + elem->ossl_list_ ## name.prev = NULL; \ + list->alpha = elem; \ + if (list->omega == NULL) \ + list->omega = elem; \ + list->num_elems++; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_tail(OSSL_LIST(name) *list, type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + if (list->omega != NULL) \ + list->omega->ossl_list_ ## name.next = elem; \ + elem->ossl_list_ ## name.prev = list->omega; \ + elem->ossl_list_ ## name.next = NULL; \ + list->omega = elem; \ + if (list->alpha == NULL) \ + list->alpha = elem; \ + list->num_elems++; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_before(OSSL_LIST(name) *list, type *e, \ + type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + elem->ossl_list_ ## name.next = e; \ + elem->ossl_list_ ## name.prev = e->ossl_list_ ## name.prev; \ + if (e->ossl_list_ ## name.prev != NULL) \ + e->ossl_list_ ## name.prev->ossl_list_ ## name.next = elem; \ + e->ossl_list_ ## name.prev = elem; \ + if (list->alpha == e) \ + list->alpha = elem; \ + list->num_elems++; \ + } \ + static ossl_unused ossl_inline void \ + ossl_list_##name##_insert_after(OSSL_LIST(name) *list, type *e, \ + type *elem) \ + { \ + assert(elem->ossl_list_ ## name.list == NULL); \ + OSSL_LIST_DBG(elem->ossl_list_ ## name.list = list) \ + elem->ossl_list_ ## name.prev = e; \ + elem->ossl_list_ ## name.next = e->ossl_list_ ## name.next; \ + if (e->ossl_list_ ## name.next != NULL) \ + e->ossl_list_ ## name.next->ossl_list_ ## name.prev = elem; \ + e->ossl_list_ ## name.next = elem; \ + if (list->omega == e) \ + list->omega = elem; \ + list->num_elems++; \ + } \ + struct ossl_list_st_ ## name + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/namemap.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/namemap.h index fd36883f..6c42a9cd 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/namemap.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/namemap.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/numbers.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/numbers.h index 4f4d3306..47fb1677 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/numbers.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/numbers.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -61,6 +61,31 @@ # define UINT64_MAX __MAXUINT__(uint64_t) # endif +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# ifndef UINT32_C +# define UINT32_C(c) (c) +# endif +# ifndef UINT64_C +# define UINT64_C(c) (c##UL) +# endif +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# ifndef UINT32_C +# define UINT32_C(c) (c##UL) +# endif +# ifndef UINT64_C +# define UINT64_C(c) (c##ULL) +# endif +# endif + + # ifndef INT128_MAX # if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ == 16 typedef __int128_t int128_t; diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet.h index ed761720..7abc6b8b 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -691,6 +691,8 @@ struct wpacket_st { */ #define WPACKET_FLAGS_ABANDON_ON_ZERO_LENGTH 2 +/* QUIC variable-length integer length prefix */ +#define WPACKET_FLAGS_QUIC_VLINT 4 /* * Initialise a WPACKET with the buffer in |buf|. The buffer must exist diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet_quic.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet_quic.h new file mode 100644 index 00000000..5173b467 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/packet_quic.h @@ -0,0 +1,150 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_PACKET_QUIC_H +# define OSSL_INTERNAL_PACKET_QUIC_H +# pragma once + +# include "internal/packet.h" +# include "internal/quic_vlint.h" + +# ifndef OPENSSL_NO_QUIC +/* + * Decodes a QUIC variable-length integer in |pkt| and stores the result in + * |data|. + */ +__owur static ossl_inline int PACKET_get_quic_vlint(PACKET *pkt, + uint64_t *data) +{ + size_t enclen; + + if (PACKET_remaining(pkt) < 1) + return 0; + + enclen = ossl_quic_vlint_decode_len(*pkt->curr); + + if (PACKET_remaining(pkt) < enclen) + return 0; + + *data = ossl_quic_vlint_decode_unchecked(pkt->curr); + packet_forward(pkt, enclen); + return 1; +} + +/* + * Decodes a QUIC variable-length integer in |pkt| and stores the result in + * |data|. Unlike PACKET_get_quic_vlint, this does not advance the current + * position. If was_minimal is non-NULL, *was_minimal is set to 1 if the integer + * was encoded using the minimal possible number of bytes and 0 otherwise. + */ +__owur static ossl_inline int PACKET_peek_quic_vlint_ex(PACKET *pkt, + uint64_t *data, + int *was_minimal) +{ + size_t enclen; + + if (PACKET_remaining(pkt) < 1) + return 0; + + enclen = ossl_quic_vlint_decode_len(*pkt->curr); + + if (PACKET_remaining(pkt) < enclen) + return 0; + + *data = ossl_quic_vlint_decode_unchecked(pkt->curr); + + if (was_minimal != NULL) + *was_minimal = (enclen == ossl_quic_vlint_encode_len(*data)); + + return 1; +} + +__owur static ossl_inline int PACKET_peek_quic_vlint(PACKET *pkt, + uint64_t *data) +{ + return PACKET_peek_quic_vlint_ex(pkt, data, NULL); +} + +/* + * Skips over a QUIC variable-length integer in |pkt| without decoding it. + */ +__owur static ossl_inline int PACKET_skip_quic_vlint(PACKET *pkt) +{ + size_t enclen; + + if (PACKET_remaining(pkt) < 1) + return 0; + + enclen = ossl_quic_vlint_decode_len(*pkt->curr); + + if (PACKET_remaining(pkt) < enclen) + return 0; + + packet_forward(pkt, enclen); + return 1; +} + +/* + * Reads a variable-length vector prefixed with a QUIC variable-length integer + * denoting the length, and stores the contents in |subpkt|. |pkt| can equal + * |subpkt|. Data is not copied: the |subpkt| packet will share its underlying + * buffer with the original |pkt|, so data wrapped by |pkt| must outlive the + * |subpkt|. Upon failure, the original |pkt| and |subpkt| are not modified. + */ +__owur static ossl_inline int PACKET_get_quic_length_prefixed(PACKET *pkt, + PACKET *subpkt) +{ + uint64_t length; + const unsigned char *data; + PACKET tmp = *pkt; + + if (!PACKET_get_quic_vlint(&tmp, &length) || + length > SIZE_MAX || + !PACKET_get_bytes(&tmp, &data, (size_t)length)) { + return 0; + } + + *pkt = tmp; + subpkt->curr = data; + subpkt->remaining = (size_t)length; + + return 1; +} + +/* + * Starts a QUIC sub-packet headed by a QUIC variable-length integer. A 4-byte + * representation is used. + */ +__owur int WPACKET_start_quic_sub_packet(WPACKET *pkt); + +/* + * Starts a QUIC sub-packet headed by a QUIC variable-length integer. max_len + * specifies the upper bound for the sub-packet size at the time the sub-packet + * is closed, which determines the encoding size for the variable-length + * integer header. max_len can be a precise figure or a worst-case bound + * if a precise figure is not available. + */ +__owur int WPACKET_start_quic_sub_packet_bound(WPACKET *pkt, size_t max_len); + +/* + * Allocates a QUIC sub-packet with exactly len bytes of payload, headed by a + * QUIC variable-length integer. The pointer to the payload buffer is output and + * must be filled by the caller. This function assures optimal selection of + * variable-length integer encoding length. + */ +__owur int WPACKET_quic_sub_allocate_bytes(WPACKET *pkt, size_t len, + unsigned char **bytes); + +/* + * Write a QUIC variable-length integer to the packet. + */ +__owur int WPACKET_quic_write_vlint(WPACKET *pkt, uint64_t v); + +# endif /* OPENSSL_NO_QUIC */ +#endif /* OSSL_INTERNAL_PACKET_QUIC_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_build_set.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_build_set.h index 126211b7..3518f008 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_build_set.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_build_set.h @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,6 +39,11 @@ int ossl_param_build_set_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, const char *key, const BIGNUM *bn); int ossl_param_build_set_bn_pad(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, const char *key, const BIGNUM *bn, size_t sz); +int ossl_param_build_set_signed_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, + const char *key, const BIGNUM *bn); +int ossl_param_build_set_signed_bn_pad(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, + const char *key, const BIGNUM *bn, + size_t sz); int ossl_param_build_set_multi_key_bn(OSSL_PARAM_BLD *bld, OSSL_PARAM *p, const char *names[], STACK_OF(BIGNUM_const) *stk); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h new file mode 100644 index 00000000..e721d071 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h @@ -0,0 +1,376 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/internal/param_names.h.in + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +#define NUM_PIDX 290 + +#define PIDX_ALG_PARAM_CIPHER 0 +#define PIDX_ALG_PARAM_DIGEST 1 +#define PIDX_ALG_PARAM_ENGINE 2 +#define PIDX_ALG_PARAM_MAC 3 +#define PIDX_ALG_PARAM_PROPERTIES 4 +#define PIDX_ASYM_CIPHER_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_ENGINE PIDX_PKEY_PARAM_ENGINE +#define PIDX_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION 5 +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS 6 +#define PIDX_ASYM_CIPHER_PARAM_OAEP_LABEL 7 +#define PIDX_ASYM_CIPHER_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_ASYM_CIPHER_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION 8 +#define PIDX_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION 9 +#define PIDX_CAPABILITY_TLS_GROUP_ALG 10 +#define PIDX_CAPABILITY_TLS_GROUP_ID 11 +#define PIDX_CAPABILITY_TLS_GROUP_IS_KEM 12 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_DTLS 13 +#define PIDX_CAPABILITY_TLS_GROUP_MAX_TLS 14 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_DTLS 15 +#define PIDX_CAPABILITY_TLS_GROUP_MIN_TLS 16 +#define PIDX_CAPABILITY_TLS_GROUP_NAME 17 +#define PIDX_CAPABILITY_TLS_GROUP_NAME_INTERNAL 18 +#define PIDX_CAPABILITY_TLS_GROUP_SECURITY_BITS 19 +#define PIDX_CAPABILITY_TLS_SIGALG_CODE_POINT 20 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_NAME 21 +#define PIDX_CAPABILITY_TLS_SIGALG_HASH_OID 22 +#define PIDX_CAPABILITY_TLS_SIGALG_IANA_NAME 23 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE 24 +#define PIDX_CAPABILITY_TLS_SIGALG_KEYTYPE_OID 25 +#define PIDX_CAPABILITY_TLS_SIGALG_MAX_TLS 14 +#define PIDX_CAPABILITY_TLS_SIGALG_MIN_TLS 16 +#define PIDX_CAPABILITY_TLS_SIGALG_NAME 26 +#define PIDX_CAPABILITY_TLS_SIGALG_OID 27 +#define PIDX_CAPABILITY_TLS_SIGALG_SECURITY_BITS 28 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_NAME 29 +#define PIDX_CAPABILITY_TLS_SIGALG_SIG_OID 30 +#define PIDX_CIPHER_PARAM_AEAD 31 +#define PIDX_CIPHER_PARAM_AEAD_IVLEN PIDX_CIPHER_PARAM_IVLEN +#define PIDX_CIPHER_PARAM_AEAD_MAC_KEY 32 +#define PIDX_CIPHER_PARAM_AEAD_TAG 33 +#define PIDX_CIPHER_PARAM_AEAD_TAGLEN 34 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD 35 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_AAD_PAD 36 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN 37 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_IV_FIXED 38 +#define PIDX_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV 39 +#define PIDX_CIPHER_PARAM_ALGORITHM_ID_PARAMS 40 +#define PIDX_CIPHER_PARAM_BLOCK_SIZE 41 +#define PIDX_CIPHER_PARAM_CTS 42 +#define PIDX_CIPHER_PARAM_CTS_MODE 43 +#define PIDX_CIPHER_PARAM_CUSTOM_IV 44 +#define PIDX_CIPHER_PARAM_HAS_RAND_KEY 45 +#define PIDX_CIPHER_PARAM_IV 46 +#define PIDX_CIPHER_PARAM_IVLEN 47 +#define PIDX_CIPHER_PARAM_KEYLEN 48 +#define PIDX_CIPHER_PARAM_MODE 49 +#define PIDX_CIPHER_PARAM_NUM 50 +#define PIDX_CIPHER_PARAM_PADDING 51 +#define PIDX_CIPHER_PARAM_RANDOM_KEY 52 +#define PIDX_CIPHER_PARAM_RC2_KEYBITS 53 +#define PIDX_CIPHER_PARAM_ROUNDS 54 +#define PIDX_CIPHER_PARAM_SPEED 55 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK 56 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD 57 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN 58 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC 59 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN 60 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN 61 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE 62 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE 63 +#define PIDX_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT 64 +#define PIDX_CIPHER_PARAM_TLS_MAC 65 +#define PIDX_CIPHER_PARAM_TLS_MAC_SIZE 66 +#define PIDX_CIPHER_PARAM_TLS_VERSION 67 +#define PIDX_CIPHER_PARAM_UPDATED_IV 68 +#define PIDX_CIPHER_PARAM_USE_BITS 69 +#define PIDX_CIPHER_PARAM_XTS_STANDARD 70 +#define PIDX_DECODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DIGEST_PARAM_ALGID_ABSENT 71 +#define PIDX_DIGEST_PARAM_BLOCK_SIZE 41 +#define PIDX_DIGEST_PARAM_MICALG 72 +#define PIDX_DIGEST_PARAM_PAD_TYPE 73 +#define PIDX_DIGEST_PARAM_SIZE 74 +#define PIDX_DIGEST_PARAM_SSL3_MS 75 +#define PIDX_DIGEST_PARAM_XOF 76 +#define PIDX_DIGEST_PARAM_XOFLEN 77 +#define PIDX_DRBG_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_DRBG_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_DRBG_PARAM_ENTROPY_REQUIRED 78 +#define PIDX_DRBG_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_DRBG_PARAM_MAX_ADINLEN 79 +#define PIDX_DRBG_PARAM_MAX_ENTROPYLEN 80 +#define PIDX_DRBG_PARAM_MAX_LENGTH 81 +#define PIDX_DRBG_PARAM_MAX_NONCELEN 82 +#define PIDX_DRBG_PARAM_MAX_PERSLEN 83 +#define PIDX_DRBG_PARAM_MIN_ENTROPYLEN 84 +#define PIDX_DRBG_PARAM_MIN_LENGTH 85 +#define PIDX_DRBG_PARAM_MIN_NONCELEN 86 +#define PIDX_DRBG_PARAM_PREDICTION_RESISTANCE 87 +#define PIDX_DRBG_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_DRBG_PARAM_RANDOM_DATA 88 +#define PIDX_DRBG_PARAM_RESEED_COUNTER 89 +#define PIDX_DRBG_PARAM_RESEED_REQUESTS 90 +#define PIDX_DRBG_PARAM_RESEED_TIME 91 +#define PIDX_DRBG_PARAM_RESEED_TIME_INTERVAL 92 +#define PIDX_DRBG_PARAM_SIZE 74 +#define PIDX_DRBG_PARAM_USE_DF 93 +#define PIDX_ENCODER_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_ENCODER_PARAM_ENCRYPT_LEVEL 94 +#define PIDX_ENCODER_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_ENCODER_PARAM_SAVE_PARAMETERS 95 +#define PIDX_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE 96 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST 97 +#define PIDX_EXCHANGE_PARAM_KDF_DIGEST_PROPS 98 +#define PIDX_EXCHANGE_PARAM_KDF_OUTLEN 99 +#define PIDX_EXCHANGE_PARAM_KDF_TYPE 100 +#define PIDX_EXCHANGE_PARAM_KDF_UKM 101 +#define PIDX_EXCHANGE_PARAM_PAD 102 +#define PIDX_GEN_PARAM_ITERATION 103 +#define PIDX_GEN_PARAM_POTENTIAL 104 +#define PIDX_KDF_PARAM_ARGON2_AD 105 +#define PIDX_KDF_PARAM_ARGON2_LANES 106 +#define PIDX_KDF_PARAM_ARGON2_MEMCOST 107 +#define PIDX_KDF_PARAM_ARGON2_VERSION 108 +#define PIDX_KDF_PARAM_CEK_ALG 109 +#define PIDX_KDF_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_KDF_PARAM_CONSTANT 110 +#define PIDX_KDF_PARAM_DATA 111 +#define PIDX_KDF_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_KDF_PARAM_EARLY_CLEAN 112 +#define PIDX_KDF_PARAM_HMACDRBG_ENTROPY 113 +#define PIDX_KDF_PARAM_HMACDRBG_NONCE 114 +#define PIDX_KDF_PARAM_INFO 115 +#define PIDX_KDF_PARAM_ITER 116 +#define PIDX_KDF_PARAM_KBKDF_R 117 +#define PIDX_KDF_PARAM_KBKDF_USE_L 118 +#define PIDX_KDF_PARAM_KBKDF_USE_SEPARATOR 119 +#define PIDX_KDF_PARAM_KEY 120 +#define PIDX_KDF_PARAM_LABEL 121 +#define PIDX_KDF_PARAM_MAC PIDX_ALG_PARAM_MAC +#define PIDX_KDF_PARAM_MAC_SIZE 122 +#define PIDX_KDF_PARAM_MODE 49 +#define PIDX_KDF_PARAM_PASSWORD 123 +#define PIDX_KDF_PARAM_PKCS12_ID 124 +#define PIDX_KDF_PARAM_PKCS5 125 +#define PIDX_KDF_PARAM_PREFIX 126 +#define PIDX_KDF_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_KDF_PARAM_SALT 127 +#define PIDX_KDF_PARAM_SCRYPT_MAXMEM 128 +#define PIDX_KDF_PARAM_SCRYPT_N 129 +#define PIDX_KDF_PARAM_SCRYPT_P 130 +#define PIDX_KDF_PARAM_SCRYPT_R 117 +#define PIDX_KDF_PARAM_SECRET 131 +#define PIDX_KDF_PARAM_SEED 132 +#define PIDX_KDF_PARAM_SIZE 74 +#define PIDX_KDF_PARAM_SSHKDF_SESSION_ID 133 +#define PIDX_KDF_PARAM_SSHKDF_TYPE 134 +#define PIDX_KDF_PARAM_SSHKDF_XCGHASH 135 +#define PIDX_KDF_PARAM_THREADS 136 +#define PIDX_KDF_PARAM_UKM 137 +#define PIDX_KDF_PARAM_X942_ACVPINFO 138 +#define PIDX_KDF_PARAM_X942_PARTYUINFO 139 +#define PIDX_KDF_PARAM_X942_PARTYVINFO 140 +#define PIDX_KDF_PARAM_X942_SUPP_PRIVINFO 141 +#define PIDX_KDF_PARAM_X942_SUPP_PUBINFO 142 +#define PIDX_KDF_PARAM_X942_USE_KEYBITS 143 +#define PIDX_KEM_PARAM_IKME 144 +#define PIDX_KEM_PARAM_OPERATION 145 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING 146 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA 147 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN 148 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_MODE 49 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_OPTIONS 149 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD 150 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC 151 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_TLSTREE 152 +#define PIDX_LIBSSL_RECORD_LAYER_PARAM_USE_ETM 153 +#define PIDX_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN 154 +#define PIDX_MAC_PARAM_BLOCK_SIZE 155 +#define PIDX_MAC_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_MAC_PARAM_CUSTOM 156 +#define PIDX_MAC_PARAM_C_ROUNDS 157 +#define PIDX_MAC_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_MAC_PARAM_DIGEST_NOINIT 158 +#define PIDX_MAC_PARAM_DIGEST_ONESHOT 159 +#define PIDX_MAC_PARAM_D_ROUNDS 160 +#define PIDX_MAC_PARAM_IV 46 +#define PIDX_MAC_PARAM_KEY 120 +#define PIDX_MAC_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_MAC_PARAM_SALT 127 +#define PIDX_MAC_PARAM_SIZE 74 +#define PIDX_MAC_PARAM_TLS_DATA_SIZE 161 +#define PIDX_MAC_PARAM_XOF 76 +#define PIDX_OBJECT_PARAM_DATA 111 +#define PIDX_OBJECT_PARAM_DATA_STRUCTURE 162 +#define PIDX_OBJECT_PARAM_DATA_TYPE 163 +#define PIDX_OBJECT_PARAM_DESC 164 +#define PIDX_OBJECT_PARAM_REFERENCE 165 +#define PIDX_OBJECT_PARAM_TYPE 134 +#define PIDX_PASSPHRASE_PARAM_INFO 115 +#define PIDX_PKEY_PARAM_BITS 166 +#define PIDX_PKEY_PARAM_CIPHER PIDX_ALG_PARAM_CIPHER +#define PIDX_PKEY_PARAM_DEFAULT_DIGEST 167 +#define PIDX_PKEY_PARAM_DHKEM_IKM 168 +#define PIDX_PKEY_PARAM_DH_GENERATOR 169 +#define PIDX_PKEY_PARAM_DH_PRIV_LEN 170 +#define PIDX_PKEY_PARAM_DIGEST PIDX_ALG_PARAM_DIGEST +#define PIDX_PKEY_PARAM_DIGEST_SIZE 171 +#define PIDX_PKEY_PARAM_DIST_ID 172 +#define PIDX_PKEY_PARAM_EC_A 173 +#define PIDX_PKEY_PARAM_EC_B 174 +#define PIDX_PKEY_PARAM_EC_CHAR2_M 175 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K1 176 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K2 177 +#define PIDX_PKEY_PARAM_EC_CHAR2_PP_K3 178 +#define PIDX_PKEY_PARAM_EC_CHAR2_TP_BASIS 179 +#define PIDX_PKEY_PARAM_EC_CHAR2_TYPE 180 +#define PIDX_PKEY_PARAM_EC_COFACTOR 181 +#define PIDX_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS 182 +#define PIDX_PKEY_PARAM_EC_ENCODING 183 +#define PIDX_PKEY_PARAM_EC_FIELD_TYPE 184 +#define PIDX_PKEY_PARAM_EC_GENERATOR 185 +#define PIDX_PKEY_PARAM_EC_GROUP_CHECK_TYPE 186 +#define PIDX_PKEY_PARAM_EC_INCLUDE_PUBLIC 187 +#define PIDX_PKEY_PARAM_EC_ORDER 188 +#define PIDX_PKEY_PARAM_EC_P 130 +#define PIDX_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT 189 +#define PIDX_PKEY_PARAM_EC_PUB_X 190 +#define PIDX_PKEY_PARAM_EC_PUB_Y 191 +#define PIDX_PKEY_PARAM_EC_SEED 132 +#define PIDX_PKEY_PARAM_ENCODED_PUBLIC_KEY 192 +#define PIDX_PKEY_PARAM_ENGINE PIDX_ALG_PARAM_ENGINE +#define PIDX_PKEY_PARAM_FFC_COFACTOR 193 +#define PIDX_PKEY_PARAM_FFC_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_FFC_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_FFC_G 194 +#define PIDX_PKEY_PARAM_FFC_GINDEX 195 +#define PIDX_PKEY_PARAM_FFC_H 196 +#define PIDX_PKEY_PARAM_FFC_P 130 +#define PIDX_PKEY_PARAM_FFC_PBITS 197 +#define PIDX_PKEY_PARAM_FFC_PCOUNTER 198 +#define PIDX_PKEY_PARAM_FFC_Q 199 +#define PIDX_PKEY_PARAM_FFC_QBITS 200 +#define PIDX_PKEY_PARAM_FFC_SEED 132 +#define PIDX_PKEY_PARAM_FFC_TYPE 134 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_G 201 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_LEGACY 202 +#define PIDX_PKEY_PARAM_FFC_VALIDATE_PQ 203 +#define PIDX_PKEY_PARAM_GROUP_NAME 204 +#define PIDX_PKEY_PARAM_IMPLICIT_REJECTION 5 +#define PIDX_PKEY_PARAM_MANDATORY_DIGEST 205 +#define PIDX_PKEY_PARAM_MASKGENFUNC 206 +#define PIDX_PKEY_PARAM_MAX_SIZE 207 +#define PIDX_PKEY_PARAM_MGF1_DIGEST 208 +#define PIDX_PKEY_PARAM_MGF1_PROPERTIES 209 +#define PIDX_PKEY_PARAM_PAD_MODE 210 +#define PIDX_PKEY_PARAM_PRIV_KEY 211 +#define PIDX_PKEY_PARAM_PROPERTIES PIDX_ALG_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_PUB_KEY 212 +#define PIDX_PKEY_PARAM_RSA_BITS PIDX_PKEY_PARAM_BITS +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT 213 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT1 214 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT2 215 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT3 216 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT4 217 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT5 218 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT6 219 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT7 220 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT8 221 +#define PIDX_PKEY_PARAM_RSA_COEFFICIENT9 222 +#define PIDX_PKEY_PARAM_RSA_D 223 +#define PIDX_PKEY_PARAM_RSA_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_PKEY_PARAM_RSA_DIGEST_PROPS PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_PKEY_PARAM_RSA_E 224 +#define PIDX_PKEY_PARAM_RSA_EXPONENT 225 +#define PIDX_PKEY_PARAM_RSA_EXPONENT1 226 +#define PIDX_PKEY_PARAM_RSA_EXPONENT10 227 +#define PIDX_PKEY_PARAM_RSA_EXPONENT2 228 +#define PIDX_PKEY_PARAM_RSA_EXPONENT3 229 +#define PIDX_PKEY_PARAM_RSA_EXPONENT4 230 +#define PIDX_PKEY_PARAM_RSA_EXPONENT5 231 +#define PIDX_PKEY_PARAM_RSA_EXPONENT6 232 +#define PIDX_PKEY_PARAM_RSA_EXPONENT7 233 +#define PIDX_PKEY_PARAM_RSA_EXPONENT8 234 +#define PIDX_PKEY_PARAM_RSA_EXPONENT9 235 +#define PIDX_PKEY_PARAM_RSA_FACTOR 236 +#define PIDX_PKEY_PARAM_RSA_FACTOR1 237 +#define PIDX_PKEY_PARAM_RSA_FACTOR10 238 +#define PIDX_PKEY_PARAM_RSA_FACTOR2 239 +#define PIDX_PKEY_PARAM_RSA_FACTOR3 240 +#define PIDX_PKEY_PARAM_RSA_FACTOR4 241 +#define PIDX_PKEY_PARAM_RSA_FACTOR5 242 +#define PIDX_PKEY_PARAM_RSA_FACTOR6 243 +#define PIDX_PKEY_PARAM_RSA_FACTOR7 244 +#define PIDX_PKEY_PARAM_RSA_FACTOR8 245 +#define PIDX_PKEY_PARAM_RSA_FACTOR9 246 +#define PIDX_PKEY_PARAM_RSA_MASKGENFUNC PIDX_PKEY_PARAM_MASKGENFUNC +#define PIDX_PKEY_PARAM_RSA_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_PKEY_PARAM_RSA_N 129 +#define PIDX_PKEY_PARAM_RSA_PRIMES 247 +#define PIDX_PKEY_PARAM_RSA_PSS_SALTLEN 248 +#define PIDX_PKEY_PARAM_RSA_TEST_P1 249 +#define PIDX_PKEY_PARAM_RSA_TEST_P2 250 +#define PIDX_PKEY_PARAM_RSA_TEST_Q1 251 +#define PIDX_PKEY_PARAM_RSA_TEST_Q2 252 +#define PIDX_PKEY_PARAM_RSA_TEST_XP 253 +#define PIDX_PKEY_PARAM_RSA_TEST_XP1 254 +#define PIDX_PKEY_PARAM_RSA_TEST_XP2 255 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ 256 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ1 257 +#define PIDX_PKEY_PARAM_RSA_TEST_XQ2 258 +#define PIDX_PKEY_PARAM_SECURITY_BITS 259 +#define PIDX_PKEY_PARAM_USE_COFACTOR_ECDH PIDX_PKEY_PARAM_USE_COFACTOR_FLAG +#define PIDX_PKEY_PARAM_USE_COFACTOR_FLAG 260 +#define PIDX_PROV_PARAM_BUILDINFO 261 +#define PIDX_PROV_PARAM_CORE_MODULE_FILENAME 262 +#define PIDX_PROV_PARAM_CORE_PROV_NAME 263 +#define PIDX_PROV_PARAM_CORE_VERSION 264 +#define PIDX_PROV_PARAM_DRBG_TRUNC_DIGEST 265 +#define PIDX_PROV_PARAM_NAME 266 +#define PIDX_PROV_PARAM_SECURITY_CHECKS 267 +#define PIDX_PROV_PARAM_SELF_TEST_DESC 268 +#define PIDX_PROV_PARAM_SELF_TEST_PHASE 269 +#define PIDX_PROV_PARAM_SELF_TEST_TYPE 270 +#define PIDX_PROV_PARAM_STATUS 271 +#define PIDX_PROV_PARAM_TLS1_PRF_EMS_CHECK 272 +#define PIDX_PROV_PARAM_VERSION 108 +#define PIDX_RAND_PARAM_GENERATE 273 +#define PIDX_RAND_PARAM_MAX_REQUEST 274 +#define PIDX_RAND_PARAM_STATE 275 +#define PIDX_RAND_PARAM_STRENGTH 276 +#define PIDX_RAND_PARAM_TEST_ENTROPY 277 +#define PIDX_RAND_PARAM_TEST_NONCE 278 +#define PIDX_SIGNATURE_PARAM_ALGORITHM_ID 279 +#define PIDX_SIGNATURE_PARAM_CONTEXT_STRING 280 +#define PIDX_SIGNATURE_PARAM_DIGEST PIDX_PKEY_PARAM_DIGEST +#define PIDX_SIGNATURE_PARAM_DIGEST_SIZE PIDX_PKEY_PARAM_DIGEST_SIZE +#define PIDX_SIGNATURE_PARAM_INSTANCE 281 +#define PIDX_SIGNATURE_PARAM_KAT 282 +#define PIDX_SIGNATURE_PARAM_MGF1_DIGEST PIDX_PKEY_PARAM_MGF1_DIGEST +#define PIDX_SIGNATURE_PARAM_MGF1_PROPERTIES PIDX_PKEY_PARAM_MGF1_PROPERTIES +#define PIDX_SIGNATURE_PARAM_NONCE_TYPE 283 +#define PIDX_SIGNATURE_PARAM_PAD_MODE PIDX_PKEY_PARAM_PAD_MODE +#define PIDX_SIGNATURE_PARAM_PROPERTIES PIDX_PKEY_PARAM_PROPERTIES +#define PIDX_SIGNATURE_PARAM_PSS_SALTLEN 248 +#define PIDX_STORE_PARAM_ALIAS 284 +#define PIDX_STORE_PARAM_DIGEST 1 +#define PIDX_STORE_PARAM_EXPECT 285 +#define PIDX_STORE_PARAM_FINGERPRINT 286 +#define PIDX_STORE_PARAM_INPUT_TYPE 287 +#define PIDX_STORE_PARAM_ISSUER 266 +#define PIDX_STORE_PARAM_PROPERTIES 4 +#define PIDX_STORE_PARAM_SERIAL 288 +#define PIDX_STORE_PARAM_SUBJECT 289 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h.in new file mode 100644 index 00000000..f34db219 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/param_names.h.in @@ -0,0 +1,18 @@ +/* + * {- join("\n * ", @autowarntext) -} + * + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +{- +use OpenSSL::paramnames qw(generate_internal_macros); +-} + +int ossl_param_find_pidx(const char *s); + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +{- generate_internal_macros(); -} diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/params.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/params.h new file mode 100644 index 00000000..3fbd0cf9 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/params.h @@ -0,0 +1,38 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include + +/* + * Extract the parameter into an allocated buffer. + * Any existing allocation in *out is cleared and freed. + * + * Returns 1 on success, 0 on failure and -1 if there are no matching params. + * + * *out and *out_len are guaranteed to be untouched if this function + * doesn't return success. + */ +int ossl_param_get1_octet_string(const OSSL_PARAM *params, const char *name, + unsigned char **out, size_t *out_len); +/* + * Concatenate all of the matching params together. + * *out will point to an allocated buffer on successful return. + * Any existing allocation in *out is cleared and freed. + * + * Passing 0 for maxsize means unlimited size output. + * + * Returns 1 on success, 0 on failure and -1 if there are no matching params. + * + * *out and *out_len are guaranteed to be untouched if this function + * doesn't return success. + */ +int ossl_param_get1_concat_octet_string(const OSSL_PARAM *params, const char *name, + unsigned char **out, size_t *out_len, + size_t maxsize); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/priority_queue.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/priority_queue.h new file mode 100644 index 00000000..5be03bf1 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/priority_queue.h @@ -0,0 +1,88 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_PRIORITY_QUEUE_H +# define OSSL_INTERNAL_PRIORITY_QUEUE_H +# pragma once + +# include +# include + +# define PRIORITY_QUEUE_OF(type) OSSL_PRIORITY_QUEUE_ ## type + +# define DEFINE_PRIORITY_QUEUE_OF_INTERNAL(type, ctype) \ + typedef struct ossl_priority_queue_st_ ## type PRIORITY_QUEUE_OF(type); \ + static ossl_unused ossl_inline PRIORITY_QUEUE_OF(type) * \ + ossl_pqueue_##type##_new(int (*compare)(const ctype *, const ctype *)) \ + { \ + return (PRIORITY_QUEUE_OF(type) *)ossl_pqueue_new( \ + (int (*)(const void *, const void *))compare); \ + } \ + static ossl_unused ossl_inline void \ + ossl_pqueue_##type##_free(PRIORITY_QUEUE_OF(type) *pq) \ + { \ + ossl_pqueue_free((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline void \ + ossl_pqueue_##type##_pop_free(PRIORITY_QUEUE_OF(type) *pq, \ + void (*freefunc)(ctype *)) \ + { \ + ossl_pqueue_pop_free((OSSL_PQUEUE *)pq, (void (*)(void *))freefunc);\ + } \ + static ossl_unused ossl_inline int \ + ossl_pqueue_##type##_reserve(PRIORITY_QUEUE_OF(type) *pq, size_t n) \ + { \ + return ossl_pqueue_reserve((OSSL_PQUEUE *)pq, n); \ + } \ + static ossl_unused ossl_inline size_t \ + ossl_pqueue_##type##_num(const PRIORITY_QUEUE_OF(type) *pq) \ + { \ + return ossl_pqueue_num((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline int \ + ossl_pqueue_##type##_push(PRIORITY_QUEUE_OF(type) *pq, \ + ctype *data, size_t *elem) \ + { \ + return ossl_pqueue_push((OSSL_PQUEUE *)pq, (void *)data, elem); \ + } \ + static ossl_unused ossl_inline ctype * \ + ossl_pqueue_##type##_peek(const PRIORITY_QUEUE_OF(type) *pq) \ + { \ + return (type *)ossl_pqueue_peek((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline ctype * \ + ossl_pqueue_##type##_pop(PRIORITY_QUEUE_OF(type) *pq) \ + { \ + return (type *)ossl_pqueue_pop((OSSL_PQUEUE *)pq); \ + } \ + static ossl_unused ossl_inline ctype * \ + ossl_pqueue_##type##_remove(PRIORITY_QUEUE_OF(type) *pq, \ + size_t elem) \ + { \ + return (type *)ossl_pqueue_remove((OSSL_PQUEUE *)pq, elem); \ + } \ + struct ossl_priority_queue_st_ ## type + +# define DEFINE_PRIORITY_QUEUE_OF(type) \ + DEFINE_PRIORITY_QUEUE_OF_INTERNAL(type, type) + +typedef struct ossl_pqueue_st OSSL_PQUEUE; + +OSSL_PQUEUE *ossl_pqueue_new(int (*compare)(const void *, const void *)); +void ossl_pqueue_free(OSSL_PQUEUE *pq); +void ossl_pqueue_pop_free(OSSL_PQUEUE *pq, void (*freefunc)(void *)); +int ossl_pqueue_reserve(OSSL_PQUEUE *pq, size_t n); + +size_t ossl_pqueue_num(const OSSL_PQUEUE *pq); +int ossl_pqueue_push(OSSL_PQUEUE *pq, void *data, size_t *elem); +void *ossl_pqueue_peek(const OSSL_PQUEUE *pq); +void *ossl_pqueue_pop(OSSL_PQUEUE *pq); +void *ossl_pqueue_remove(OSSL_PQUEUE *pq, size_t elem); + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/property.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/property.h index d09274d0..3adff499 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/property.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/property.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/provider.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/provider.h index 18937f84..ab41d643 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/provider.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/provider.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -32,7 +32,7 @@ OSSL_PROVIDER *ossl_provider_find(OSSL_LIB_CTX *libctx, const char *name, int noconfig); OSSL_PROVIDER *ossl_provider_new(OSSL_LIB_CTX *libctx, const char *name, OSSL_provider_init_fn *init_function, - int noconfig); + OSSL_PARAM *params, int noconfig); int ossl_provider_up_ref(OSSL_PROVIDER *prov); void ossl_provider_free(OSSL_PROVIDER *prov); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ackm.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ackm.h new file mode 100644 index 00000000..03fc6088 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ackm.h @@ -0,0 +1,297 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_QUIC_ACKM_H +# define OSSL_QUIC_ACKM_H + +# include "internal/quic_statm.h" +# include "internal/quic_cc.h" +# include "internal/quic_types.h" +# include "internal/quic_wire.h" +# include "internal/time.h" +# include "internal/list.h" + +# ifndef OPENSSL_NO_QUIC + +typedef struct ossl_ackm_st OSSL_ACKM; + +OSSL_ACKM *ossl_ackm_new(OSSL_TIME (*now)(void *arg), + void *now_arg, + OSSL_STATM *statm, + const OSSL_CC_METHOD *cc_method, + OSSL_CC_DATA *cc_data); +void ossl_ackm_free(OSSL_ACKM *ackm); + +void ossl_ackm_set_loss_detection_deadline_callback(OSSL_ACKM *ackm, + void (*fn)(OSSL_TIME deadline, + void *arg), + void *arg); + +void ossl_ackm_set_ack_deadline_callback(OSSL_ACKM *ackm, + void (*fn)(OSSL_TIME deadline, + int pkt_space, + void *arg), + void *arg); + +/* + * Configures the RX-side maximum ACK delay. This is the maximum amount of time + * the peer is allowed to delay sending an ACK frame after receiving an + * ACK-eliciting packet. The peer communicates this value via a transport + * parameter and it must be provided to the ACKM. + */ +void ossl_ackm_set_rx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME rx_max_ack_delay); + +/* + * Configures the TX-side maximum ACK delay. This is the maximum amount of time + * we are allowed to delay sending an ACK frame after receiving an ACK-eliciting + * packet. Note that this cannot be changed after a connection is established as + * it must be accurately reported in the transport parameters we send to our + * peer. + */ +void ossl_ackm_set_tx_max_ack_delay(OSSL_ACKM *ackm, OSSL_TIME tx_max_ack_delay); + +typedef struct ossl_ackm_tx_pkt_st OSSL_ACKM_TX_PKT; +struct ossl_ackm_tx_pkt_st { + /* The packet number of the transmitted packet. */ + QUIC_PN pkt_num; + + /* The number of bytes in the packet which was sent. */ + size_t num_bytes; + + /* The time at which the packet was sent. */ + OSSL_TIME time; + + /* + * If the packet being described by this structure contains an ACK frame, + * this must be set to the largest PN ACK'd by that frame. + * + * Otherwise, it should be set to QUIC_PN_INVALID. + * + * This is necessary to bound the number of PNs we have to keep track of on + * the RX side (RFC 9000 s. 13.2.4). It allows older PN tracking information + * on the RX side to be discarded. + */ + QUIC_PN largest_acked; + + /* + * One of the QUIC_PN_SPACE_* values. This qualifies the pkt_num field + * into a packet number space. + */ + unsigned int pkt_space :2; + + /* + * 1 if the packet is in flight. A packet is considered 'in flight' if it is + * counted for purposes of congestion control and 'bytes in flight' counts. + * Most packets are considered in flight. The only circumstance where a + * numbered packet is not considered in flight is if it contains only ACK + * frames (not even PADDING frames), as these frames can bypass CC. + */ + unsigned int is_inflight :1; + + /* + * 1 if the packet has one or more ACK-eliciting frames. + * Note that if this is set, is_inflight must be set. + */ + unsigned int is_ack_eliciting :1; + + /* 1 if the packet is a PTO probe. */ + unsigned int is_pto_probe :1; + + /* 1 if the packet is an MTU probe. */ + unsigned int is_mtu_probe :1; + + /* Callback called if frames in this packet are lost. arg is cb_arg. */ + void (*on_lost)(void *arg); + /* Callback called if frames in this packet are acked. arg is cb_arg. */ + void (*on_acked)(void *arg); + /* + * Callback called if frames in this packet are neither acked nor lost. arg + * is cb_arg. + */ + void (*on_discarded)(void *arg); + void *cb_arg; + + /* + * (Internal use fields; must be zero-initialized.) + * + * Keep a TX history list, anext is used to manifest + * a singly-linked list of newly-acknowledged packets, and lnext is used to + * manifest a singly-linked list of newly lost packets. + */ + OSSL_LIST_MEMBER(tx_history, OSSL_ACKM_TX_PKT); + + struct ossl_ackm_tx_pkt_st *anext; + struct ossl_ackm_tx_pkt_st *lnext; +}; + +int ossl_ackm_on_tx_packet(OSSL_ACKM *ackm, OSSL_ACKM_TX_PKT *pkt); +int ossl_ackm_on_rx_datagram(OSSL_ACKM *ackm, size_t num_bytes); + +# define OSSL_ACKM_ECN_NONE 0 +# define OSSL_ACKM_ECN_ECT1 1 +# define OSSL_ACKM_ECN_ECT0 2 +# define OSSL_ACKM_ECN_ECNCE 3 + +typedef struct ossl_ackm_rx_pkt_st { + /* The packet number of the received packet. */ + QUIC_PN pkt_num; + + /* The time at which the packet was received. */ + OSSL_TIME time; + + /* + * One of the QUIC_PN_SPACE_* values. This qualifies the pkt_num field + * into a packet number space. + */ + unsigned int pkt_space :2; + + /* 1 if the packet has one or more ACK-eliciting frames. */ + unsigned int is_ack_eliciting :1; + + /* + * One of the OSSL_ACKM_ECN_* values. This is the ECN labelling applied to + * the received packet. If unknown, use OSSL_ACKM_ECN_NONE. + */ + unsigned int ecn :2; +} OSSL_ACKM_RX_PKT; + +int ossl_ackm_on_rx_packet(OSSL_ACKM *ackm, const OSSL_ACKM_RX_PKT *pkt); + +int ossl_ackm_on_rx_ack_frame(OSSL_ACKM *ackm, const OSSL_QUIC_FRAME_ACK *ack, + int pkt_space, OSSL_TIME rx_time); + +/* + * Discards a PN space. This must be called for a PN space before freeing the + * ACKM if you want in-flight packets to have their discarded callbacks called. + * This should never be called in ordinary QUIC usage for the Application Data + * PN space, but it may be called for the Application Data PN space prior to + * freeing the ACKM to simplify teardown implementations. + */ +int ossl_ackm_on_pkt_space_discarded(OSSL_ACKM *ackm, int pkt_space); + +int ossl_ackm_on_handshake_confirmed(OSSL_ACKM *ackm); +int ossl_ackm_on_timeout(OSSL_ACKM *ackm); + +OSSL_TIME ossl_ackm_get_loss_detection_deadline(OSSL_ACKM *ackm); + +/* + * Generates an ACK frame, regardless of whether the ACK manager thinks + * one should currently be sent. + * + * This clears the flag returned by ossl_ackm_is_ack_desired and the deadline + * returned by ossl_ackm_get_ack_deadline. + */ +const OSSL_QUIC_FRAME_ACK *ossl_ackm_get_ack_frame(OSSL_ACKM *ackm, + int pkt_space); + +/* + * Returns the deadline after which an ACK frame should be generated by calling + * ossl_ackm_get_ack_frame, or OSSL_TIME_INFINITY if no deadline is currently + * applicable. If the deadline has already passed, this function may return that + * deadline, or may return OSSL_TIME_ZERO. + */ +OSSL_TIME ossl_ackm_get_ack_deadline(OSSL_ACKM *ackm, int pkt_space); + +/* + * Returns 1 if the ACK manager thinks an ACK frame ought to be generated and + * sent at this time. ossl_ackm_get_ack_frame will always provide an ACK frame + * whether or not this returns 1, so it is suggested that you call this function + * first to determine whether you need to generate an ACK frame. + * + * The return value of this function can change based on calls to + * ossl_ackm_on_rx_packet and based on the passage of time (see + * ossl_ackm_get_ack_deadline). + */ +int ossl_ackm_is_ack_desired(OSSL_ACKM *ackm, int pkt_space); + +/* + * Returns 1 if the given RX PN is 'processable'. A processable PN is one that + * is not either + * + * - duplicate, meaning that we have already been passed such a PN in a call + * to ossl_ackm_on_rx_packet; or + * + * - written off, meaning that the PN is so old we have stopped tracking state + * for it (meaning that we cannot tell whether it is a duplicate and cannot + * process it safely). + * + * This should be called for a packet before attempting to process its contents. + * Failure to do so may result in processing a duplicated packet in violation of + * the RFC. + * + * The return value of this function transitions from 1 to 0 for a given PN once + * that PN is passed to ossl_ackm_on_rx_packet, thus this function must be used + * before calling ossl_ackm_on_rx_packet. + */ +int ossl_ackm_is_rx_pn_processable(OSSL_ACKM *ackm, QUIC_PN pn, int pkt_space); + +typedef struct ossl_ackm_probe_info_st { + /* + * The following two probe request types are used only for anti-deadlock + * purposes in relation to the anti-amplification logic, by generating + * packets to buy ourselves more anti-amplification credit with the server + * until a client address is verified. Note that like all Initial packets, + * any Initial probes are padded. + * + * Note: The ACKM will only ever increase these by one at a time, + * as only one probe packet should be generated for these cases. + */ + uint32_t anti_deadlock_initial, anti_deadlock_handshake; + + /* + * Send an ACK-eliciting packet for each count here. + * + * Note: The ACKM may increase this by either one or two for each probe + * request, depending on how many probe packets it thinks should be + * generated. + */ + uint32_t pto[QUIC_PN_SPACE_NUM]; +} OSSL_ACKM_PROBE_INFO; + +/* + * Returns a pointer to a structure counting any pending probe requests which + * have been generated by the ACKM. The fields in the structure are incremented + * by one every time the ACKM wants another probe of the given type to be sent. + * If the ACKM thinks two packets should be generated for a probe, it will + * increment the field twice. + * + * It is permissible for the caller to decrement or zero these fields to keep + * track of when it has generated a probe as asked. The returned structure + * has the same lifetime as the ACKM. + * + * This function should be called after calling e.g. ossl_ackm_on_timeout + * to determine if any probe requests have been generated. + */ +OSSL_ACKM_PROBE_INFO *ossl_ackm_get0_probe_request(OSSL_ACKM *ackm); + +int ossl_ackm_get_largest_unacked(OSSL_ACKM *ackm, int pkt_space, QUIC_PN *pn); + +/* + * Forces the ACKM to consider a packet with the given PN in the given PN space + * as having been pseudo-lost. The main reason to use this is during a Retry, to + * force any resources sent in the first Initial packet to be resent. + * + * The lost callback is called for the packet, but the packet is NOT considered + * lost for congestion control purposes. Thus this is not exactly the same as a + * true loss situation. + */ +int ossl_ackm_mark_packet_pseudo_lost(OSSL_ACKM *ackm, + int pkt_space, QUIC_PN pn); + +/* + * Returns the PTO duration as currently calculated. This is a quantity of time. + * This duration is used in various parts of QUIC besides the ACKM. + */ +OSSL_TIME ossl_ackm_get_pto_duration(OSSL_ACKM *ackm); + +/* Returns the largest acked PN in the given PN space. */ +QUIC_PN ossl_ackm_get_largest_acked(OSSL_ACKM *ackm, int pkt_space); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cc.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cc.h new file mode 100644 index 00000000..60c710b0 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cc.h @@ -0,0 +1,219 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_QUIC_CC_H +# define OSSL_QUIC_CC_H + +#include "openssl/params.h" +#include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +typedef struct ossl_cc_data_st OSSL_CC_DATA; + +typedef struct ossl_cc_ack_info_st { + /* The time the packet being acknowledged was originally sent. */ + OSSL_TIME tx_time; + + /* The size in bytes of the packet being acknowledged. */ + size_t tx_size; +} OSSL_CC_ACK_INFO; + +typedef struct ossl_cc_loss_info_st { + /* The time the packet being lost was originally sent. */ + OSSL_TIME tx_time; + + /* The size in bytes of the packet which has been determined lost. */ + size_t tx_size; +} OSSL_CC_LOSS_INFO; + +typedef struct ossl_cc_ecn_info_st { + /* + * The time at which the largest acked PN (in the incoming ACK frame) was + * sent. + */ + OSSL_TIME largest_acked_time; +} OSSL_CC_ECN_INFO; + +/* Parameter (read-write): Maximum datagram payload length in bytes. */ +#define OSSL_CC_OPTION_MAX_DGRAM_PAYLOAD_LEN "max_dgram_payload_len" + +/* Diagnostic (read-only): current congestion window size in bytes. */ +#define OSSL_CC_OPTION_CUR_CWND_SIZE "cur_cwnd_size" + +/* Diagnostic (read-only): minimum congestion window size in bytes. */ +#define OSSL_CC_OPTION_MIN_CWND_SIZE "min_cwnd_size" + +/* Diagnostic (read-only): current net bytes in flight. */ +#define OSSL_CC_OPTION_CUR_BYTES_IN_FLIGHT "bytes_in_flight" + +/* Diagnostic (read-only): method-specific state value. */ +#define OSSL_CC_OPTION_CUR_STATE "cur_state" + +/* + * Congestion control abstract interface. + * + * This interface is broadly based on the design described in RFC 9002. However, + * the demarcation between the ACKM and the congestion controller does not + * exactly match that delineated in the RFC 9002 pseudocode. Where aspects of + * the demarcation involve the congestion controller accessing internal state of + * the ACKM, the interface has been revised where possible to provide the + * information needed by the congestion controller and avoid needing to give the + * congestion controller access to the ACKM's internal data structures. + * + * Particular changes include: + * + * - In our implementation, it is the responsibility of the ACKM to determine + * if a loss event constitutes persistent congestion. + * + * - In our implementation, it is the responsibility of the ACKM to determine + * if the ECN-CE counter has increased. The congestion controller is simply + * informed when an ECN-CE event occurs. + * + * All of these changes are intended to avoid having a congestion controller + * have to access ACKM internal state. + */ +#define OSSL_CC_LOST_FLAG_PERSISTENT_CONGESTION (1U << 0) + +typedef struct ossl_cc_method_st { + /* + * Instantiation. + */ + OSSL_CC_DATA *(*new)(OSSL_TIME (*now_cb)(void *arg), + void *now_cb_arg); + + void (*free)(OSSL_CC_DATA *ccdata); + + /* + * Reset of state. + */ + void (*reset)(OSSL_CC_DATA *ccdata); + + /* + * Escape hatch for option configuration. + * + * params is an array of OSSL_PARAM structures. + * + * Returns 1 on success and 0 on failure. + */ + int (*set_input_params)(OSSL_CC_DATA *ccdata, + const OSSL_PARAM *params); + + /* + * (Re)bind output (diagnostic) information. + * + * params is an array of OSSL_PARAM structures used to output values. The + * storage locations associated with each parameter are stored internally + * and updated whenever the state of the congestion controller is updated; + * thus, the storage locations associated with the OSSL_PARAMs passed in the + * call to this function must remain valid until the congestion controller + * is freed or those parameters are unbound. A given parameter name may be + * bound to only one location at a time. The params structures themselves + * do not need to remain allocated after this call returns. + * + * Returns 1 on success and 0 on failure. + */ + int (*bind_diagnostics)(OSSL_CC_DATA *ccdata, + OSSL_PARAM *params); + + /* + * Unbind diagnostic information. The parameters with the given names are + * unbound, cancelling the effects of a previous call to bind_diagnostic(). + * params is an array of OSSL_PARAMs. The values of the parameters are + * ignored. If a parameter is already unbound, there is no effect for that + * parameter but other parameters are still unbound. + * + * Returns 1 on success or 0 on failure. + */ + int (*unbind_diagnostics)(OSSL_CC_DATA *ccdata, + OSSL_PARAM *params); + + /* + * Returns the amount of additional data (above and beyond the data + * currently in flight) which can be sent in bytes. Returns 0 if no more + * data can be sent at this time. The return value of this method + * can vary as time passes. + */ + uint64_t (*get_tx_allowance)(OSSL_CC_DATA *ccdata); + + /* + * Returns the time at which the return value of get_tx_allowance might be + * higher than its current value. This is not a guarantee and spurious + * wakeups are allowed. Returns ossl_time_infinite() if there is no current + * wakeup deadline. + */ + OSSL_TIME (*get_wakeup_deadline)(OSSL_CC_DATA *ccdata); + + /* + * The On Data Sent event. num_bytes should be the size of the packet in + * bytes (or the aggregate size of multiple packets which have just been + * sent). + */ + int (*on_data_sent)(OSSL_CC_DATA *ccdata, + uint64_t num_bytes); + + /* + * The On Data Acked event. See OSSL_CC_ACK_INFO structure for details + * of the information to be passed. + */ + int (*on_data_acked)(OSSL_CC_DATA *ccdata, + const OSSL_CC_ACK_INFO *info); + + /* + * The On Data Lost event. See OSSL_CC_LOSS_INFO structure for details + * of the information to be passed. + * + * Note: When the ACKM determines that a set of multiple packets has been + * lost, it is useful for a congestion control algorithm to be able to + * process this as a single loss event rather than multiple loss events. + * Thus, calling this function may cause the congestion controller to defer + * state updates under the assumption that subsequent calls to + * on_data_lost() representing further lost packets in the same loss event + * may be forthcoming. Always call on_data_lost_finished() after one or more + * calls to on_data_lost(). + */ + int (*on_data_lost)(OSSL_CC_DATA *ccdata, + const OSSL_CC_LOSS_INFO *info); + + /* + * To be called after a sequence of one or more on_data_lost() calls + * representing multiple packets in a single loss detection incident. + * + * Flags may be 0 or OSSL_CC_LOST_FLAG_PERSISTENT_CONGESTION. + */ + int (*on_data_lost_finished)(OSSL_CC_DATA *ccdata, uint32_t flags); + + /* + * For use when a PN space is invalidated or a packet must otherwise be + * 'undone' for congestion control purposes without acting as a loss signal. + * Only the size of the packet is needed. + */ + int (*on_data_invalidated)(OSSL_CC_DATA *ccdata, + uint64_t num_bytes); + + /* + * Called from the ACKM when detecting an increased ECN-CE value in an ACK + * frame. This indicates congestion. + * + * Note that this differs from the RFC's conceptual segregation of the loss + * detection and congestion controller functions, as in our implementation + * the ACKM is responsible for detecting increases to ECN-CE and simply + * tells the congestion controller when ECN-triggered congestion has + * occurred. This allows a slightly more efficient implementation and + * narrower interface between the ACKM and CC. + */ + int (*on_ecn)(OSSL_CC_DATA *ccdata, + const OSSL_CC_ECN_INFO *info); +} OSSL_CC_METHOD; + +extern const OSSL_CC_METHOD ossl_cc_dummy_method; +extern const OSSL_CC_METHOD ossl_cc_newreno_method; + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cfq.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cfq.h new file mode 100644 index 00000000..22c436dc --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_cfq.h @@ -0,0 +1,154 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_CFQ_H +# define OSSL_QUIC_CFQ_H + +# include +# include "internal/quic_types.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Control Frame Queue Item + * ============================= + * + * The CFQ item structure has a public and a private part. This structure + * documents the public part. + */ +typedef struct quic_cfq_item_st QUIC_CFQ_ITEM; + +struct quic_cfq_item_st { + /* + * These fields are not used by the CFQ, but are a convenience to assist the + * TXPIM in keeping a list of GCR control frames which were sent in a + * packet. They may be used for any purpose. + */ + QUIC_CFQ_ITEM *pkt_prev, *pkt_next; + + /* All other fields are private; use ossl_quic_cfq_item_* accessors. */ +}; + +# define QUIC_CFQ_STATE_NEW 0 +# define QUIC_CFQ_STATE_TX 1 + +/* If set, do not retransmit on loss */ +#define QUIC_CFQ_ITEM_FLAG_UNRELIABLE (1U << 0) + +/* Returns the frame type of a CFQ item. */ +uint64_t ossl_quic_cfq_item_get_frame_type(const QUIC_CFQ_ITEM *item); + +/* Returns a pointer to the encoded buffer of a CFQ item. */ +const unsigned char *ossl_quic_cfq_item_get_encoded(const QUIC_CFQ_ITEM *item); + +/* Returns the length of the encoded buffer in bytes. */ +size_t ossl_quic_cfq_item_get_encoded_len(const QUIC_CFQ_ITEM *item); + +/* Returns the CFQ item state, a QUIC_CFQ_STATE_* value. */ +int ossl_quic_cfq_item_get_state(const QUIC_CFQ_ITEM *item); + +/* Returns the PN space for the CFQ item. */ +uint32_t ossl_quic_cfq_item_get_pn_space(const QUIC_CFQ_ITEM *item); + +/* Returns 1 if this is an unreliable frame. */ +int ossl_quic_cfq_item_is_unreliable(const QUIC_CFQ_ITEM *item); + +/* + * QUIC Control Frame Queue + * ======================== + */ +typedef struct quic_cfq_st QUIC_CFQ; + +QUIC_CFQ *ossl_quic_cfq_new(void); +void ossl_quic_cfq_free(QUIC_CFQ *cfq); + +/* + * Input Side + * ---------- + */ + +/* + * Enqueue a frame to the CFQ. + * + * encoded points to the opaque encoded frame. + * + * free_cb is called by the CFQ when the buffer is no longer needed; + * free_cb_arg is an opaque value passed to free_cb. + * + * priority determines the relative ordering of control frames in a packet. + * Lower numerical values for priority mean that a frame should come earlier in + * a packet. pn_space is a QUIC_PN_SPACE_* value. + * + * On success, returns a QUIC_CFQ_ITEM pointer which acts as a handle to + * the queued frame. On failure, returns NULL. + * + * The frame is initially in the TX state, so there is no need to call + * ossl_quic_cfq_mark_tx() immediately after calling this function. + * + * The frame type is duplicated as the frame_type argument here, even though it + * is also encoded into the buffer. This allows the caller to determine the + * frame type if desired without having to decode the frame. + * + * flags is zero or more QUIC_CFQ_ITEM_FLAG values. + */ +typedef void (cfq_free_cb)(unsigned char *buf, size_t buf_len, void *arg); + +QUIC_CFQ_ITEM *ossl_quic_cfq_add_frame(QUIC_CFQ *cfq, + uint32_t priority, + uint32_t pn_space, + uint64_t frame_type, + uint32_t flags, + const unsigned char *encoded, + size_t encoded_len, + cfq_free_cb *free_cb, + void *free_cb_arg); + +/* + * Effects an immediate transition of the given CFQ item to the TX state. + */ +void ossl_quic_cfq_mark_tx(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item); + +/* + * Effects an immediate transition of the given CFQ item to the NEW state, + * allowing the frame to be retransmitted. If priority is not UINT32_MAX, + * the priority is changed to the given value. + */ +void ossl_quic_cfq_mark_lost(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item, + uint32_t priority); + +/* + * Releases a CFQ item. The item may be in either state (NEW or TX) prior to the + * call. The QUIC_CFQ_ITEM pointer must not be used following this call. + */ +void ossl_quic_cfq_release(QUIC_CFQ *cfq, QUIC_CFQ_ITEM *item); + +/* + * Output Side + * ----------- + */ + +/* + * Gets the highest priority CFQ item in the given PN space awaiting + * transmission. If there are none, returns NULL. + */ +QUIC_CFQ_ITEM *ossl_quic_cfq_get_priority_head(const QUIC_CFQ *cfq, + uint32_t pn_space); + +/* + * Given a CFQ item, gets the next CFQ item awaiting transmission in priority + * order in the given PN space. In other words, given the return value of + * ossl_quic_cfq_get_priority_head(), returns the next-lower priority item. + * Returns NULL if the given item is the last item in priority order. + */ +QUIC_CFQ_ITEM *ossl_quic_cfq_item_get_priority_next(const QUIC_CFQ_ITEM *item, + uint32_t pn_space); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_channel.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_channel.h new file mode 100644 index 00000000..f46db063 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_channel.h @@ -0,0 +1,429 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_CHANNEL_H +# define OSSL_QUIC_CHANNEL_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_stream_map.h" +# include "internal/quic_reactor.h" +# include "internal/quic_statm.h" +# include "internal/time.h" +# include "internal/thread.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Channel + * ============ + * + * A QUIC channel (QUIC_CHANNEL) is an object which binds together all of the + * various pieces of QUIC into a single top-level object, and handles connection + * state which is not specific to the client or server roles. In particular, it + * is strictly separated from the libssl front end I/O API personality layer, + * and is not an SSL object. + * + * The name QUIC_CHANNEL is chosen because QUIC_CONNECTION is already in use, + * but functionally these relate to the same thing (a QUIC connection). The use + * of two separate objects ensures clean separation between the API personality + * layer and common code for handling connections, and between the functionality + * which is specific to clients and which is specific to servers, and the + * functionality which is common to both. + * + * The API personality layer provides SSL objects (e.g. a QUIC_CONNECTION) which + * consume a QUIC channel and implement a specific public API. Things which are + * handled by the API personality layer include emulation of blocking semantics, + * handling of SSL object mode flags like non-partial write mode, etc. + * + * Where the QUIC_CHANNEL is used in a server role, there is one QUIC_CHANNEL + * per connection. In the future a QUIC Channel Manager will probably be defined + * to handle ownership of resources which are shared between connections (e.g. + * demuxers). Since we only use server-side functionality for dummy test servers + * for now, which only need to handle one connection at a time, this is not + * currently modelled. + * + * Synchronisation + * --------------- + * + * To support thread assisted mode, QUIC_CHANNEL can be used by multiple + * threads. **It is the caller's responsibility to ensure that the QUIC_CHANNEL + * is only accessed (whether via its methods or via direct access to its state) + * while the channel mutex is held**, except for methods explicitly marked as + * not requiring prior locking. This is an unchecked precondition. + * + * The instantiator of the channel is responsible for providing a suitable + * mutex which then serves as the channel mutex; see QUIC_CHANNEL_ARGS. + */ + +/* + * The function does not acquire the channel mutex and assumes it is already + * held by the calling thread. + * + * Any function tagged with this has the following precondition: + * + * Precondition: must hold channel mutex (unchecked) + */ +# define QUIC_NEEDS_LOCK + +/* + * The function acquires the channel mutex and releases it before returning in + * all circumstances. + * + * Any function tagged with this has the following precondition and + * postcondition: + * + * Precondition: must not hold channel mutex (unchecked) + * Postcondition: channel mutex is not held (by calling thread) + */ +# define QUIC_TAKES_LOCK + +/* + * The function acquires the channel mutex and leaves it acquired + * when returning success. + * + * Any function tagged with this has the following precondition and + * postcondition: + * + * Precondition: must not hold channel mutex (unchecked) + * Postcondition: channel mutex is held by calling thread + * or function returned failure + */ +# define QUIC_ACQUIRES_LOCK + +# define QUIC_TODO_LOCK + +# define QUIC_CHANNEL_STATE_IDLE 0 +# define QUIC_CHANNEL_STATE_ACTIVE 1 +# define QUIC_CHANNEL_STATE_TERMINATING_CLOSING 2 +# define QUIC_CHANNEL_STATE_TERMINATING_DRAINING 3 +# define QUIC_CHANNEL_STATE_TERMINATED 4 + +typedef struct quic_channel_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + int is_server; + SSL *tls; + + /* + * This must be a mutex the lifetime of which will exceed that of the + * channel. The instantiator of the channel is responsible for providing a + * mutex as this makes it easier to handle instantiation and teardown of + * channels in situations potentially requiring locking. + * + * Note that this is a MUTEX not a RWLOCK as it needs to be an OS mutex for + * compatibility with an OS's condition variable wait API, whereas RWLOCK + * may, depending on the build configuration, be implemented using an OS's + * mutex primitive or using its RW mutex primitive. + */ + CRYPTO_MUTEX *mutex; + + /* + * Optional function pointer to use to retrieve the current time. If NULL, + * ossl_time_now() is used. + */ + OSSL_TIME (*now_cb)(void *arg); + void *now_cb_arg; +} QUIC_CHANNEL_ARGS; + +typedef struct quic_channel_st QUIC_CHANNEL; + +/* Represents the cause for a connection's termination. */ +typedef struct quic_terminate_cause_st { + /* + * If we are in a TERMINATING or TERMINATED state, this is the error code + * associated with the error. This field is valid iff we are in the + * TERMINATING or TERMINATED states. + */ + uint64_t error_code; + + /* + * If terminate_app is set and this is nonzero, this is the frame type which + * caused the connection to be terminated. + */ + uint64_t frame_type; + + /* + * Optional reason string. When calling ossl_quic_channel_local_close, if a + * reason string pointer is passed, it is copied and stored inside + * QUIC_CHANNEL for the remainder of the lifetime of the channel object. + * Thus the string pointed to by this value, if non-NULL, is valid for the + * lifetime of the QUIC_CHANNEL object. + */ + const char *reason; + + /* + * Length of reason in bytes. The reason is supposed to contain a UTF-8 + * string but may be arbitrary data if the reason came from the network. + */ + size_t reason_len; + + /* Is this error code in the transport (0) or application (1) space? */ + unsigned int app : 1; + + /* + * If set, the cause of the termination is a received CONNECTION_CLOSE + * frame. Otherwise, we decided to terminate ourselves and sent a + * CONNECTION_CLOSE frame (regardless of whether the peer later also sends + * one). + */ + unsigned int remote : 1; +} QUIC_TERMINATE_CAUSE; + + +/* + * Create a new QUIC channel using the given arguments. The argument structure + * does not need to remain allocated. Returns NULL on failure. + */ +QUIC_CHANNEL *ossl_quic_channel_new(const QUIC_CHANNEL_ARGS *args); + +/* No-op if ch is NULL. */ +void ossl_quic_channel_free(QUIC_CHANNEL *ch); + +/* Set mutator callbacks for test framework support */ +int ossl_quic_channel_set_mutator(QUIC_CHANNEL *ch, + ossl_mutate_packet_cb mutatecb, + ossl_finish_mutate_cb finishmutatecb, + void *mutatearg); + +/* + * Connection Lifecycle Events + * =========================== + * + * Various events that can be raised on the channel by other parts of the QUIC + * implementation. Some of these are suitable for general use by any part of the + * code (e.g. ossl_quic_channel_raise_protocol_error), others are for very + * specific use by particular components only (e.g. + * ossl_quic_channel_on_handshake_confirmed). + */ + +/* + * To be used by a QUIC connection. Starts the channel. For a client-mode + * channel, this starts sending the first handshake layer message, etc. Can only + * be called in the idle state; successive calls are ignored. + */ +int ossl_quic_channel_start(QUIC_CHANNEL *ch); + +/* Start a locally initiated connection shutdown. */ +void ossl_quic_channel_local_close(QUIC_CHANNEL *ch, uint64_t app_error_code, + const char *app_reason); + +/* + * Called when the handshake is confirmed. + */ +int ossl_quic_channel_on_handshake_confirmed(QUIC_CHANNEL *ch); + +/* + * Raises a protocol error. This is intended to be the universal call suitable + * for handling of all peer-triggered protocol violations or errors detected by + * us. We specify a QUIC transport-scope error code and optional frame type + * which was responsible. If a frame type is not applicable, specify zero. The + * reason string is not currently handled, but should be a string of static + * storage duration. If the connection has already terminated due to a previous + * protocol error, this is a no-op; first error wins. + * + * Usually the ossl_quic_channel_raise_protocol_error() function should be used. + * The ossl_quic_channel_raise_protocol_error_loc() function can be used + * directly for passing through existing call site information from an existing + * error. + */ +void ossl_quic_channel_raise_protocol_error_loc(QUIC_CHANNEL *ch, + uint64_t error_code, + uint64_t frame_type, + const char *reason, + ERR_STATE *err_state, + const char *src_file, + int src_line, + const char *src_func); + +#define ossl_quic_channel_raise_protocol_error(ch, error_code, frame_type, reason) \ + ossl_quic_channel_raise_protocol_error_loc((ch), (error_code), \ + (frame_type), \ + (reason), \ + NULL, \ + OPENSSL_FILE, \ + OPENSSL_LINE, \ + OPENSSL_FUNC) + +#define ossl_quic_channel_raise_protocol_error_state(ch, error_code, frame_type, reason, state) \ + ossl_quic_channel_raise_protocol_error_loc((ch), (error_code), \ + (frame_type), \ + (reason), \ + (state), \ + OPENSSL_FILE, \ + OPENSSL_LINE, \ + OPENSSL_FUNC) + + +/* + * Returns 1 if permanent net error was detected on the QUIC_CHANNEL, + * 0 otherwise. + */ +int ossl_quic_channel_net_error(QUIC_CHANNEL *ch); + +/* Restore saved error state (best effort) */ +void ossl_quic_channel_restore_err_state(QUIC_CHANNEL *ch); + +/* For RXDP use. */ +void ossl_quic_channel_on_remote_conn_close(QUIC_CHANNEL *ch, + OSSL_QUIC_FRAME_CONN_CLOSE *f); +void ossl_quic_channel_on_new_conn_id(QUIC_CHANNEL *ch, + OSSL_QUIC_FRAME_NEW_CONN_ID *f); + +/* + * Queries and Accessors + * ===================== + */ + +/* Gets the reactor which can be used to tick/poll on the channel. */ +QUIC_REACTOR *ossl_quic_channel_get_reactor(QUIC_CHANNEL *ch); + +/* Gets the QSM used with the channel. */ +QUIC_STREAM_MAP *ossl_quic_channel_get_qsm(QUIC_CHANNEL *ch); + +/* Gets the statistics manager used with the channel. */ +OSSL_STATM *ossl_quic_channel_get_statm(QUIC_CHANNEL *ch); + +/* + * Gets/sets the current peer address. Generally this should be used before + * starting a channel in client mode. + */ +int ossl_quic_channel_get_peer_addr(QUIC_CHANNEL *ch, BIO_ADDR *peer_addr); +int ossl_quic_channel_set_peer_addr(QUIC_CHANNEL *ch, const BIO_ADDR *peer_addr); + +/* Gets/sets the underlying network read and write BIOs. */ +BIO *ossl_quic_channel_get_net_rbio(QUIC_CHANNEL *ch); +BIO *ossl_quic_channel_get_net_wbio(QUIC_CHANNEL *ch); +int ossl_quic_channel_set_net_rbio(QUIC_CHANNEL *ch, BIO *net_rbio); +int ossl_quic_channel_set_net_wbio(QUIC_CHANNEL *ch, BIO *net_wbio); + +/* + * Re-poll the network BIOs already set to determine if their support + * for polling has changed. + */ +int ossl_quic_channel_update_poll_descriptors(QUIC_CHANNEL *ch); + +/* + * Returns an existing stream by stream ID. Returns NULL if the stream does not + * exist. + */ +QUIC_STREAM *ossl_quic_channel_get_stream_by_id(QUIC_CHANNEL *ch, + uint64_t stream_id); + +/* Returns 1 if channel is terminating or terminated. */ +int ossl_quic_channel_is_term_any(const QUIC_CHANNEL *ch); +const QUIC_TERMINATE_CAUSE * +ossl_quic_channel_get_terminate_cause(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_closing(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_terminated(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_active(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_handshake_complete(const QUIC_CHANNEL *ch); +int ossl_quic_channel_is_handshake_confirmed(const QUIC_CHANNEL *ch); + +QUIC_DEMUX *ossl_quic_channel_get0_demux(QUIC_CHANNEL *ch); + +SSL *ossl_quic_channel_get0_ssl(QUIC_CHANNEL *ch); + +/* + * Retrieves a pointer to the channel mutex which was provided at the time the + * channel was instantiated. In order to allow locks to be acquired and released + * with the correct granularity, it is the caller's responsibility to ensure + * this lock is held for write while calling any QUIC_CHANNEL method, except for + * methods explicitly designed otherwise. + * + * This method is thread safe and does not require prior locking. It can also be + * called while the lock is already held. Note that this is simply a convenience + * function to access the mutex which was passed to the channel at instantiation + * time; it does not belong to the channel but rather is presumed to belong to + * the owner of the channel. + */ +CRYPTO_MUTEX *ossl_quic_channel_get_mutex(QUIC_CHANNEL *ch); + +/* + * Creates a new locally-initiated stream in the stream mapper, choosing an + * appropriate stream ID. If is_uni is 1, creates a unidirectional stream, else + * creates a bidirectional stream. Returns NULL on failure. + */ +QUIC_STREAM *ossl_quic_channel_new_stream_local(QUIC_CHANNEL *ch, int is_uni); + +/* + * Creates a new remotely-initiated stream in the stream mapper. The stream ID + * is used to confirm the initiator and determine the stream type. The stream is + * automatically added to the QSM's accept queue. A pointer to the stream is + * also returned. Returns NULL on failure. + */ +QUIC_STREAM *ossl_quic_channel_new_stream_remote(QUIC_CHANNEL *ch, + uint64_t stream_id); + +/* + * Configures incoming stream auto-reject. If enabled, incoming streams have + * both their sending and receiving parts automatically rejected using + * STOP_SENDING and STREAM_RESET frames. aec is the application error + * code to be used for those frames. + */ +void ossl_quic_channel_set_incoming_stream_auto_reject(QUIC_CHANNEL *ch, + int enable, + uint64_t aec); + +/* + * Causes the channel to reject the sending and receiving parts of a stream, + * as though autorejected. Can be used if a stream has already been + * accepted. + */ +void ossl_quic_channel_reject_stream(QUIC_CHANNEL *ch, QUIC_STREAM *qs); + +/* Replace local connection ID in TXP and DEMUX for testing purposes. */ +int ossl_quic_channel_replace_local_cid(QUIC_CHANNEL *ch, + const QUIC_CONN_ID *conn_id); + +/* Setters for the msg_callback and msg_callback_arg */ +void ossl_quic_channel_set_msg_callback(QUIC_CHANNEL *ch, + ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_quic_channel_set_msg_callback_arg(QUIC_CHANNEL *ch, + void *msg_callback_arg); + +/* Testing use only - sets a TXKU threshold packet count override value. */ +void ossl_quic_channel_set_txku_threshold_override(QUIC_CHANNEL *ch, + uint64_t tx_pkt_threshold); + +/* Testing use only - gets current 1-RTT key epochs for QTX and QRX. */ +uint64_t ossl_quic_channel_get_tx_key_epoch(QUIC_CHANNEL *ch); +uint64_t ossl_quic_channel_get_rx_key_epoch(QUIC_CHANNEL *ch); + +/* Artificially trigger a spontaneous TXKU if possible. */ +int ossl_quic_channel_trigger_txku(QUIC_CHANNEL *ch); +int ossl_quic_channel_has_pending(const QUIC_CHANNEL *ch); + +/* Force transmission of an ACK-eliciting packet. */ +int ossl_quic_channel_ping(QUIC_CHANNEL *ch); + +/* For testing use. While enabled, ticking is not performed. */ +void ossl_quic_channel_set_inhibit_tick(QUIC_CHANNEL *ch, int inhibit); + +/* + * These queries exist for diagnostic purposes only. They may roll over. + * Do not rely on them for non-testing purposes. + */ +uint16_t ossl_quic_channel_get_diag_num_rx_ack(QUIC_CHANNEL *ch); + +/* + * Diagnostic use only. Gets the current local CID. + */ +void ossl_quic_channel_get_diag_local_cid(QUIC_CHANNEL *ch, QUIC_CONN_ID *cid); + +/* + * Returns 1 if stream count flow control allows us to create a new + * locally-initiated stream. + */ +int ossl_quic_channel_is_new_local_stream_admissible(QUIC_CHANNEL *ch, int is_uni); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_demux.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_demux.h new file mode 100644 index 00000000..444249e7 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_demux.h @@ -0,0 +1,364 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_DEMUX_H +# define OSSL_QUIC_DEMUX_H + +# include +# include "internal/quic_types.h" +# include "internal/bio_addr.h" +# include "internal/time.h" +# include "internal/list.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Demuxer + * ============ + * + * The QUIC connection demuxer is the entity responsible for receiving datagrams + * from the network via a datagram BIO. It parses packet headers to determine + * each packet's destination connection ID (DCID) and hands off processing of + * the packet to the correct QUIC Record Layer (QRL)'s RX side (known as the + * QRX). + * + * A QRX is instantiated per QUIC connection and contains the cryptographic + * resources needed to decrypt QUIC packets for that connection. Received + * datagrams are passed from the demuxer to the QRX via a callback registered + * for a specific DCID by the QRX; thus the demuxer has no specific knowledge of + * the QRX and is not coupled to it. + * + * A connection may have multiple connection IDs associated with it; a QRX + * handles this simply by registering multiple connection IDs with the demuxer + * via multiple register calls. + * + * URX Queue + * --------- + * + * Since the demuxer must handle the initial reception of datagrams from the OS, + * RX queue management for new, unprocessed datagrams is also handled by the + * demuxer. + * + * The demuxer maintains a queue of Unprocessed RX Entries (URXEs), which store + * unprocessed (i.e., encrypted, unvalidated) data received from the network. + * The URXE queue is designed to allow multiple datagrams to be received in a + * single call to BIO_recvmmsg, where supported. + * + * One URXE is used per received datagram. Each datagram may contain multiple + * packets, however, this is not the demuxer's concern. QUIC prohibits different + * packets in the same datagram from containing different DCIDs; the demuxer + * only considers the DCID of the first packet in a datagram when deciding how + * to route a received datagram, and it is the responsibility of the QRX to + * enforce this rule. Packets other than the first packet in a datagram are not + * examined by the demuxer, and the demuxer does not perform validation of + * packet headers other than to the minimum extent necessary to extract the + * DCID; further parsing and validation of packet headers is the responsibility + * of the QRX. + * + * Rather than defining an opaque interface, the URXE structure internals + * are exposed. Since the demuxer is only exposed to other parts of the QUIC + * implementation internals, this poses no problem, and has a number of + * advantages: + * + * - Fields in the URXE can be allocated to support requirements in other + * components, like the QRX, which would otherwise have to allocate extra + * memory corresponding to each URXE. + * + * - Other components, like the QRX, can keep the URXE in queues of its own + * when it is not being managed by the demuxer. + * + * URX Queue Structure + * ------------------- + * + * The URXE queue is maintained as a simple doubly-linked list. URXE entries are + * moved between different lists in their lifecycle (for example, from a free + * list to a pending list and vice versa). The buffer into which datagrams are + * received immediately follows this URXE header structure and is part of the + * same allocation. + */ + +typedef struct quic_urxe_st QUIC_URXE; + +/* Maximum number of packets we allow to exist in one datagram. */ +#define QUIC_MAX_PKT_PER_URXE (sizeof(uint64_t) * 8) + +struct quic_urxe_st { + OSSL_LIST_MEMBER(urxe, QUIC_URXE); + + /* + * The URXE data starts after this structure so we don't need a pointer. + * data_len stores the current length (i.e., the length of the received + * datagram) and alloc_len stores the allocation length. The URXE will be + * reallocated if we need a larger allocation than is available, though this + * should not be common as we will have a good idea of worst-case MTUs up + * front. + */ + size_t data_len, alloc_len; + + /* + * Bitfields per packet. processed indicates the packet has been processed + * and must not be processed again, hpr_removed indicates header protection + * has already been removed. Used by QRX only; not used by the demuxer. + */ + uint64_t processed, hpr_removed; + + /* + * Address of peer we received the datagram from, and the local interface + * address we received it on. If local address support is not enabled, local + * is zeroed. + */ + BIO_ADDR peer, local; + + /* + * Time at which datagram was received (or ossl_time_zero()) if a now + * function was not provided). + */ + OSSL_TIME time; + + /* + * Used by the QRX to mark whether a datagram has been deferred. Used by the + * QRX only; not used by the demuxer. + */ + char deferred; + + /* + * Used by the DEMUX to track if a URXE has been handed out. Used primarily + * for debugging purposes. + */ + char demux_state; +}; + +/* Accessors for URXE buffer. */ +static ossl_unused ossl_inline unsigned char * +ossl_quic_urxe_data(const QUIC_URXE *e) +{ + return (unsigned char *)&e[1]; +} + +static ossl_unused ossl_inline unsigned char * +ossl_quic_urxe_data_end(const QUIC_URXE *e) +{ + return ossl_quic_urxe_data(e) + e->data_len; +} + +/* List structure tracking a queue of URXEs. */ +DEFINE_LIST_OF(urxe, QUIC_URXE); +typedef OSSL_LIST(urxe) QUIC_URXE_LIST; + +/* + * List management helpers. These are used by the demuxer but can also be used + * by users of the demuxer to manage URXEs. + */ +void ossl_quic_urxe_remove(QUIC_URXE_LIST *l, QUIC_URXE *e); +void ossl_quic_urxe_insert_head(QUIC_URXE_LIST *l, QUIC_URXE *e); +void ossl_quic_urxe_insert_tail(QUIC_URXE_LIST *l, QUIC_URXE *e); + +/* Opaque type representing a demuxer. */ +typedef struct quic_demux_st QUIC_DEMUX; + +/* + * Called when a datagram is received for a given connection ID. + * + * e is a URXE containing the datagram payload. It is permissible for the callee + * to mutate this buffer; once the demuxer calls this callback, it will never + * read the buffer again. + * + * The callee must arrange for ossl_quic_demux_release_urxe or + * ossl_quic_demux_reinject_urxe to be called on the URXE at some point in the + * future (this need not be before the callback returns). + * + * At the time the callback is made, the URXE will not be in any queue, + * therefore the callee can use the prev and next fields as it wishes. + */ +typedef void (ossl_quic_demux_cb_fn)(QUIC_URXE *e, void *arg); + +/* + * Called when a datagram is received. + * Returns 1 if the datagram ends with a stateless reset token and + * 0 if not. + */ +typedef int (ossl_quic_stateless_reset_cb_fn)(const unsigned char *data, + size_t data_len, void *arg); + +/* + * Creates a new demuxer. The given BIO is used to receive datagrams from the + * network using BIO_recvmmsg. short_conn_id_len is the length of destination + * connection IDs used in RX'd packets; it must have the same value for all + * connections used on a socket. default_urxe_alloc_len is the buffer size to + * receive datagrams into; it should be a value large enough to contain any + * received datagram according to local MTUs, etc. + * + * now is an optional function used to determine the time a datagram was + * received. now_arg is an opaque argument passed to the function. If now is + * NULL, ossl_time_zero() is used as the datagram reception time. + */ +QUIC_DEMUX *ossl_quic_demux_new(BIO *net_bio, + size_t short_conn_id_len, + OSSL_TIME (*now)(void *arg), + void *now_arg); + +/* + * Destroy a demuxer. All URXEs must have been released back to the demuxer + * before calling this. No-op if demux is NULL. + */ +void ossl_quic_demux_free(QUIC_DEMUX *demux); + +/* + * Changes the BIO which the demuxer reads from. This also sets the MTU if the + * BIO supports querying the MTU. + */ +void ossl_quic_demux_set_bio(QUIC_DEMUX *demux, BIO *net_bio); + +/* + * Changes the MTU in bytes we use to receive datagrams. + */ +int ossl_quic_demux_set_mtu(QUIC_DEMUX *demux, unsigned int mtu); + +/* + * Register a datagram handler callback for a connection ID. + * + * ossl_quic_demux_pump will call the specified function if it receives a datagram + * the first packet of which has the specified destination connection ID. + * + * It is assumed all packets in a datagram have the same destination connection + * ID (as QUIC mandates this), but it is the user's responsibility to check for + * this and reject subsequent packets in a datagram that violate this rule. + * + * dst_conn_id is a destination connection ID; it is copied and need not remain + * valid after this function returns. + * + * cb_arg is passed to cb when it is called. For information on the callback, + * see its typedef above. + * + * Only one handler can be set for a given connection ID. If a handler is + * already set for the given connection ID, returns 0. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_demux_register(QUIC_DEMUX *demux, + const QUIC_CONN_ID *dst_conn_id, + ossl_quic_demux_cb_fn *cb, + void *cb_arg); + +/* + * Unregisters any datagram handler callback set for the given connection ID. + * Fails if no handler is registered for the given connection ID. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_demux_unregister(QUIC_DEMUX *demux, + const QUIC_CONN_ID *dst_conn_id); + +/* + * Unregisters any datagram handler callback from all connection IDs it is used + * for. cb and cb_arg must both match the values passed to + * ossl_quic_demux_register. + */ +void ossl_quic_demux_unregister_by_cb(QUIC_DEMUX *demux, + ossl_quic_demux_cb_fn *cb, + void *cb_arg); + +/* + * Set the default packet handler. This is used for incoming packets which don't + * match a registered DCID. This is only needed for servers. If a default packet + * handler is not set, a packet which doesn't match a registered DCID is + * silently dropped. A default packet handler may be unset by passing NULL. + * + * The handler is responsible for ensuring that ossl_quic_demux_reinject_urxe or + * ossl_quic_demux_release_urxe is called on the passed packet at some point in + * the future, which may or may not be before the handler returns. + */ +void ossl_quic_demux_set_default_handler(QUIC_DEMUX *demux, + ossl_quic_demux_cb_fn *cb, + void *cb_arg); + +/* + * Sets a callback for stateless reset processing. + * + * If set, this callback is called for datagrams for which we cannot identify + * a CID. This function should return 1 if there is a stateless reset token + * present and 0 if not. If there is a token present, the connection should + * also be reset. + */ +void ossl_quic_demux_set_stateless_reset_handler( + QUIC_DEMUX *demux, + ossl_quic_stateless_reset_cb_fn *cb, void *cb_arg); + +/* + * Releases a URXE back to the demuxer. No reference must be made to the URXE or + * its buffer after calling this function. The URXE must not be in any queue; + * that is, its prev and next pointers must be NULL. + */ +void ossl_quic_demux_release_urxe(QUIC_DEMUX *demux, + QUIC_URXE *e); + +/* + * Reinjects a URXE which was issued to a registered DCID callback or the + * default packet handler callback back into the pending queue. This is useful + * when a packet has been handled by the default packet handler callback such + * that a DCID has now been registered and can be dispatched normally by DCID. + * Once this has been called, the caller must not touch the URXE anymore and + * must not also call ossl_quic_demux_release_urxe(). + * + * The URXE is reinjected at the head of the queue, so it will be reprocessed + * immediately. + */ +void ossl_quic_demux_reinject_urxe(QUIC_DEMUX *demux, + QUIC_URXE *e); + +/* + * Process any unprocessed RX'd datagrams, by calling registered callbacks by + * connection ID, reading more datagrams from the BIO if necessary. + * + * Returns one of the following values: + * + * QUIC_DEMUX_PUMP_RES_OK + * At least one incoming datagram was processed. + * + * QUIC_DEMUX_PUMP_RES_TRANSIENT_FAIL + * No more incoming datagrams are currently available. + * Call again later. + * + * QUIC_DEMUX_PUMP_RES_PERMANENT_FAIL + * Either the network read BIO has failed in a non-transient fashion, or + * the QUIC implementation has encountered an internal state, assertion + * or allocation error. The caller should tear down the connection + * similarly to in the case of a protocol violation. + * + */ +#define QUIC_DEMUX_PUMP_RES_OK 1 +#define QUIC_DEMUX_PUMP_RES_TRANSIENT_FAIL (-1) +#define QUIC_DEMUX_PUMP_RES_PERMANENT_FAIL (-2) +#define QUIC_DEMUX_PUMP_RES_STATELESS_RESET (-3) + +int ossl_quic_demux_pump(QUIC_DEMUX *demux); + +/* + * Artificially inject a packet into the demuxer for testing purposes. The + * buffer must not exceed the URXE size being used by the demuxer. + * + * If peer or local are NULL, their respective fields are zeroed in the injected + * URXE. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_demux_inject(QUIC_DEMUX *demux, + const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); + +/* + * Returns 1 if there are any pending URXEs. + */ +int ossl_quic_demux_has_pending(const QUIC_DEMUX *demux); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_error.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_error.h new file mode 100644 index 00000000..ae195a5f --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_error.h @@ -0,0 +1,56 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_ERROR_H +# define OSSL_QUIC_ERROR_H + +# include + +# ifndef OPENSSL_NO_QUIC + +/* RFC 9000 Section 20.1 */ +# define QUIC_ERR_NO_ERROR 0x00 +# define QUIC_ERR_INTERNAL_ERROR 0x01 +# define QUIC_ERR_CONNECTION_REFUSED 0x02 +# define QUIC_ERR_FLOW_CONTROL_ERROR 0x03 +# define QUIC_ERR_STREAM_LIMIT_ERROR 0x04 +# define QUIC_ERR_STREAM_STATE_ERROR 0x05 +# define QUIC_ERR_FINAL_SIZE_ERROR 0x06 +# define QUIC_ERR_FRAME_ENCODING_ERROR 0x07 +# define QUIC_ERR_TRANSPORT_PARAMETER_ERROR 0x08 +# define QUIC_ERR_CONNECTION_ID_LIMIT_ERROR 0x09 +# define QUIC_ERR_PROTOCOL_VIOLATION 0x0A +# define QUIC_ERR_INVALID_TOKEN 0x0B +# define QUIC_ERR_APPLICATION_ERROR 0x0C +# define QUIC_ERR_CRYPTO_BUFFER_EXCEEDED 0x0D +# define QUIC_ERR_KEY_UPDATE_ERROR 0x0E +# define QUIC_ERR_AEAD_LIMIT_REACHED 0x0F +# define QUIC_ERR_NO_VIABLE_PATH 0x10 + +/* Inclusive range for handshake-specific errors. */ +# define QUIC_ERR_CRYPTO_ERR_BEGIN 0x0100 +# define QUIC_ERR_CRYPTO_ERR_END 0x01FF + +# define QUIC_ERR_CRYPTO_ERR(X) \ + (QUIC_ERR_CRYPTO_ERR_BEGIN + (X)) + +# define QUIC_ERR_CRYPTO_UNEXPECTED_MESSAGE \ + QUIC_ERR_CRYPTO_ERR(SSL3_AD_UNEXPECTED_MESSAGE) + +# define QUIC_ERR_CRYPTO_MISSING_EXT \ + QUIC_ERR_CRYPTO_ERR(TLS13_AD_MISSING_EXTENSION) + +# define QUIC_ERR_CRYPTO_NO_APP_PROTO \ + QUIC_ERR_CRYPTO_ERR(TLS1_AD_NO_APPLICATION_PROTOCOL) + +const char *ossl_quic_err_to_string(uint64_t error_code); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fc.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fc.h new file mode 100644 index 00000000..49b448a3 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fc.h @@ -0,0 +1,277 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_FC_H +# define OSSL_QUIC_FC_H + +# include +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * TX Flow Controller (TXFC) + * ========================= + * + * For discussion, see doc/designs/quic-design/quic-fc.md. + */ +typedef struct quic_txfc_st QUIC_TXFC; + +struct quic_txfc_st { + QUIC_TXFC *parent; /* stream-level iff non-NULL */ + uint64_t swm, cwm; + char has_become_blocked; +}; + +/* + * Initialises a TX flow controller. conn_txfc should be non-NULL and point to + * the connection-level flow controller if the TXFC is for stream-level flow + * control, and NULL otherwise. + */ +int ossl_quic_txfc_init(QUIC_TXFC *txfc, QUIC_TXFC *conn_txfc); + +/* + * Gets the parent (i.e., connection-level) TX flow controller. Returns NULL if + * called on a connection-level TX flow controller. + */ +QUIC_TXFC *ossl_quic_txfc_get_parent(QUIC_TXFC *txfc); + +/* + * Bump the credit watermark (CWM) value. This is the 'On TX Window Updated' + * operation. This function is a no-op if it has already been called with an + * equal or higher CWM value. + * + * It returns 1 iff the call resulted in the CWM being bumped and 0 if it was + * not increased because it has already been called with an equal or higher CWM + * value. This is not an error per se but may indicate a local programming error + * or a protocol error in a remote peer. + */ +int ossl_quic_txfc_bump_cwm(QUIC_TXFC *txfc, uint64_t cwm); + +/* + * Get the number of bytes by which we are in credit. This is the number of + * controlled bytes we are allowed to send. (Thus if this function returns 0, we + * are currently blocked.) + * + * If called on a stream-level TXFC, ossl_quic_txfc_get_credit is called on + * the connection-level TXFC as well, and the lesser of the two values is + * returned. The consumed value is the amount already consumed on the connection + * level TXFC. + */ +uint64_t ossl_quic_txfc_get_credit(QUIC_TXFC *txfc, uint64_t consumed); + +/* + * Like ossl_quic_txfc_get_credit(), but when called on a stream-level TXFC, + * retrieves only the stream-level credit value and does not clamp it based on + * connection-level flow control. Any credit value is reduced by the consumed + * amount. + */ +uint64_t ossl_quic_txfc_get_credit_local(QUIC_TXFC *txfc, uint64_t consumed); + +/* + * Consume num_bytes of credit. This is the 'On TX' operation. This should be + * called when we transmit any controlled bytes. Calling this with an argument + * of 0 is a no-op. + * + * We must never transmit more controlled bytes than we are in credit for (see + * the return value of ossl_quic_txfc_get_credit()). If you call this function + * with num_bytes greater than our current credit, this function consumes the + * remainder of the credit and returns 0. This indicates a serious programming + * error on the caller's part. Otherwise, the function returns 1. + * + * If called on a stream-level TXFC, ossl_quic_txfc_consume_credit() is called + * on the connection-level TXFC also. If the call to that function on the + * connection-level TXFC returns zero, this function will also return zero. + */ +int ossl_quic_txfc_consume_credit(QUIC_TXFC *txfc, uint64_t num_bytes); + +/* + * Like ossl_quic_txfc_consume_credit(), but when called on a stream-level TXFC, + * consumes only from the stream-level credit and does not inform the + * connection-level TXFC. + */ +int ossl_quic_txfc_consume_credit_local(QUIC_TXFC *txfc, uint64_t num_bytes); + +/* + * This flag is provided for convenience. A caller is not required to use it. It + * is a boolean flag set whenever our credit drops to zero. If clear is 1, the + * flag is cleared. The old value of the flag is returned. Callers may use this + * to determine if they need to send a DATA_BLOCKED or STREAM_DATA_BLOCKED + * frame, which should contain the value returned by ossl_quic_txfc_get_cwm(). + */ +int ossl_quic_txfc_has_become_blocked(QUIC_TXFC *txfc, int clear); + +/* + * Get the current CWM value. This is mainly only needed when generating a + * DATA_BLOCKED or STREAM_DATA_BLOCKED frame, or for diagnostic purposes. + */ +uint64_t ossl_quic_txfc_get_cwm(QUIC_TXFC *txfc); + +/* + * Get the current spent watermark (SWM) value. This is purely for diagnostic + * use and should not be needed in normal circumstances. + */ +uint64_t ossl_quic_txfc_get_swm(QUIC_TXFC *txfc); + +/* + * RX Flow Controller (RXFC) + * ========================= + */ +typedef struct quic_rxfc_st QUIC_RXFC; + +struct quic_rxfc_st { + /* + * swm is the sent/received watermark, which tracks how much we have + * received from the peer. rwm is the retired watermark, which tracks how + * much has been passed to the application. esrwm is the rwm value at which + * the current auto-tuning epoch started. hwm is the highest stream length + * (STREAM frame offset + payload length) we have seen from a STREAM frame + * yet. + */ + uint64_t cwm, swm, rwm, esrwm, hwm, cur_window_size, max_window_size; + OSSL_TIME epoch_start; + OSSL_TIME (*now)(void *arg); + void *now_arg; + QUIC_RXFC *parent; + unsigned char error_code, has_cwm_changed, is_fin, standalone; +}; + +/* + * Initialises an RX flow controller. conn_rxfc should be non-NULL and point to + * a connection-level RXFC if the RXFC is for stream-level flow control, and + * NULL otherwise. initial_window_size and max_window_size specify the initial + * and absolute maximum window sizes, respectively. Window size values are + * expressed in bytes and determine how much credit the RXFC extends to the peer + * to transmit more data at a time. + */ +int ossl_quic_rxfc_init(QUIC_RXFC *rxfc, QUIC_RXFC *conn_rxfc, + uint64_t initial_window_size, + uint64_t max_window_size, + OSSL_TIME (*now)(void *arg), + void *now_arg); + +/* + * Initialises an RX flow controller which is used by itself and not under a + * connection-level RX flow controller. This can be used for stream count + * enforcement as well as CRYPTO buffer enforcement. + */ +int ossl_quic_rxfc_init_standalone(QUIC_RXFC *rxfc, + uint64_t initial_window_size, + OSSL_TIME (*now)(void *arg), + void *now_arg); + +/* + * Gets the parent (i.e., connection-level) RXFC. Returns NULL if called on a + * connection-level RXFC. + */ +QUIC_RXFC *ossl_quic_rxfc_get_parent(QUIC_RXFC *rxfc); + +/* + * Changes the current maximum window size value. + */ +void ossl_quic_rxfc_set_max_window_size(QUIC_RXFC *rxfc, + size_t max_window_size); + +/* + * To be called whenever a STREAM frame is received. + * + * end is the value (offset + len), where offset is the offset field of the + * STREAM frame and len is the length of the STREAM frame's payload in bytes. + * + * is_fin should be 1 if the STREAM frame had the FIN flag set and 0 otherwise. + * + * This function may be used on a stream-level RXFC only. The connection-level + * RXFC will have its state updated by the stream-level RXFC. + * + * You should check ossl_quic_rxfc_has_error() on both connection-level and + * stream-level RXFCs after calling this function, as an incoming STREAM frame + * may cause flow control limits to be exceeded by an errant peer. This + * function still returns 1 in this case, as this is not a caller error. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_rxfc_on_rx_stream_frame(QUIC_RXFC *rxfc, + uint64_t end, int is_fin); + +/* + * To be called whenever controlled bytes are retired, i.e. when bytes are + * dequeued from a QUIC stream and passed to the application. num_bytes + * is the number of bytes which were passed to the application. + * + * You should call this only on a stream-level RXFC. This function will update + * the connection-level RXFC automatically. + * + * rtt should be the current best understanding of the RTT to the peer, as + * offered by the Statistics Manager. + * + * You should check ossl_quic_rxfc_has_cwm_changed() after calling this + * function, as it may have caused the RXFC to decide to grant more flow control + * credit to the peer. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_rxfc_on_retire(QUIC_RXFC *rxfc, + uint64_t num_bytes, + OSSL_TIME rtt); + +/* + * Returns the current CWM which the RXFC thinks the peer should have. + * + * Note that the RXFC will increase this value in response to events, at which + * time a MAX_DATA or MAX_STREAM_DATA frame must be generated. Use + * ossl_quic_rxfc_has_cwm_changed() to detect this condition. + * + * This value increases monotonically. + */ +uint64_t ossl_quic_rxfc_get_cwm(QUIC_RXFC *rxfc); + +/* + * Returns the current SWM. This is the total number of bytes the peer has + * transmitted to us. This is intended for diagnostic use only; you should + * not need it. + */ +uint64_t ossl_quic_rxfc_get_swm(QUIC_RXFC *rxfc); + +/* + * Returns the current RWM. This is the total number of bytes that has been + * retired. This is intended for diagnostic use only; you should not need it. + */ +uint64_t ossl_quic_rxfc_get_rwm(QUIC_RXFC *rxfc); + +/* + * Returns the CWM changed flag. If clear is 1, the flag is cleared and the old + * value is returned. + */ +int ossl_quic_rxfc_has_cwm_changed(QUIC_RXFC *rxfc, int clear); + +/* + * Returns a QUIC_ERR_* error code if a flow control error has been detected. + * Otherwise, returns QUIC_ERR_NO_ERROR. If clear is 1, the error is cleared + * and the old value is returned. + * + * May return one of the following values: + * + * QUIC_ERR_FLOW_CONTROL_ERROR: + * This indicates a flow control protocol violation by the remote peer; the + * connection should be terminated in this event. + * QUIC_ERR_FINAL_SIZE: + * The peer attempted to change the stream length after ending the stream. + */ +int ossl_quic_rxfc_get_error(QUIC_RXFC *rxfc, int clear); + +/* + * Returns 1 if the RXFC is a stream-level RXFC and the RXFC knows the final + * size for the stream in bytes. If this is the case and final_size is non-NULL, + * writes the final size to *final_size. Otherwise, returns 0. + */ +int ossl_quic_rxfc_get_final_size(const QUIC_RXFC *rxfc, uint64_t *final_size); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fifd.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fifd.h new file mode 100644 index 00000000..a260ec44 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_fifd.h @@ -0,0 +1,80 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_FIFD_H +# define OSSL_QUIC_FIFD_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_cfq.h" +# include "internal/quic_ackm.h" +# include "internal/quic_txpim.h" +# include "internal/quic_stream.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Frame-in-Flight Dispatcher (FIFD) + * ====================================== + */ +struct quic_fifd_st { + /* Internal data; use the ossl_quic_fifd functions. */ + QUIC_CFQ *cfq; + OSSL_ACKM *ackm; + QUIC_TXPIM *txpim; + QUIC_SSTREAM *(*get_sstream_by_id)(uint64_t stream_id, + uint32_t pn_space, + void *arg); + void *get_sstream_by_id_arg; + void (*regen_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg); + void *regen_frame_arg; + void (*confirm_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg); + void *confirm_frame_arg; + void (*sstream_updated)(uint64_t stream_id, + void *arg); + void *sstream_updated_arg; +}; + +int ossl_quic_fifd_init(QUIC_FIFD *fifd, + QUIC_CFQ *cfq, + OSSL_ACKM *ackm, + QUIC_TXPIM *txpim, + /* stream_id is UINT64_MAX for the crypto stream */ + QUIC_SSTREAM *(*get_sstream_by_id)(uint64_t stream_id, + uint32_t pn_space, + void *arg), + void *get_sstream_by_id_arg, + /* stream_id is UINT64_MAX if not applicable */ + void (*regen_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg), + void *regen_frame_arg, + void (*confirm_frame)(uint64_t frame_type, + uint64_t stream_id, + QUIC_TXPIM_PKT *pkt, + void *arg), + void *confirm_frame_arg, + void (*sstream_updated)(uint64_t stream_id, + void *arg), + void *sstream_updated_arg); + +void ossl_quic_fifd_cleanup(QUIC_FIFD *fifd); /* (no-op) */ + +int ossl_quic_fifd_pkt_commit(QUIC_FIFD *fifd, QUIC_TXPIM_PKT *pkt); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_reactor.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_reactor.h new file mode 100644 index 00000000..57bb551e --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_reactor.h @@ -0,0 +1,188 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_QUIC_REACTOR_H +# define OSSL_QUIC_REACTOR_H + +# include "internal/time.h" +# include "internal/sockets.h" +# include + +# ifndef OPENSSL_NO_QUIC + +/* + * Core I/O Reactor Framework + * ========================== + * + * Manages use of async network I/O which the QUIC stack is built on. The core + * mechanic looks like this: + * + * - There is a pollable FD for both the read and write side respectively. + * Readability and writeability of these FDs respectively determines when + * network I/O is available. + * + * - The reactor can export these FDs to the user, as well as flags indicating + * whether the user should listen for readability, writeability, or neither. + * + * - The reactor can export a timeout indication to the user, indicating when + * the reactor should be called (via libssl APIs) regardless of whether + * the network socket has become ready. + * + * The reactor is based around a tick callback which is essentially the mutator + * function. The mutator attempts to do whatever it can, attempting to perform + * network I/O to the extent currently feasible. When done, the mutator returns + * information to the reactor indicating when it should be woken up again: + * + * - Should it be woken up when network RX is possible? + * - Should it be woken up when network TX is possible? + * - Should it be woken up no later than some deadline X? + * + * The intention is that ALL I/O-related SSL_* functions with side effects (e.g. + * SSL_read/SSL_write) consist of three phases: + * + * - Optionally mutate the QUIC machine's state. + * - Optionally tick the QUIC reactor. + * - Optionally mutate the QUIC machine's state. + * + * For example, SSL_write is a mutation (appending to a stream buffer) followed + * by an optional tick (generally expected as we may want to send the data + * immediately, though not strictly needed if transmission is being deferred due + * to Nagle's algorithm, etc.). + * + * SSL_read is also a mutation and in principle does not need to tick the + * reactor, but it generally will anyway to ensure that the reactor is regularly + * ticked by an application which is only reading and not writing. + * + * If the SSL object is being used in blocking mode, SSL_read may need to block + * if no data is available yet, and SSL_write may need to block if buffers + * are full. + * + * The internals of the QUIC I/O engine always use asynchronous I/O. If the + * application desires blocking semantics, we handle this by adding a blocking + * adaptation layer on top of our internal asynchronous I/O API as exposed by + * the reactor interface. + */ +typedef struct quic_tick_result_st { + char net_read_desired; + char net_write_desired; + OSSL_TIME tick_deadline; +} QUIC_TICK_RESULT; + +typedef struct quic_reactor_st { + /* + * BIO poll descriptors which can be polled. poll_r is a poll descriptor + * which becomes readable when the QUIC state machine can potentially do + * work, and poll_w is a poll descriptor which becomes writable when the + * QUIC state machine can potentially do work. Generally, either of these + * conditions means that SSL_tick() should be called, or another SSL + * function which implicitly calls SSL_tick() (e.g. SSL_read/SSL_write()). + */ + BIO_POLL_DESCRIPTOR poll_r, poll_w; + OSSL_TIME tick_deadline; /* ossl_time_infinite() if none currently applicable */ + + void (*tick_cb)(QUIC_TICK_RESULT *res, void *arg, uint32_t flags); + void *tick_cb_arg; + + /* + * These are true if we would like to know when we can read or write from + * the network respectively. + */ + unsigned int net_read_desired : 1; + unsigned int net_write_desired : 1; + + /* + * Are the read and write poll descriptors we are currently configured with + * things we can actually poll? + */ + unsigned int can_poll_r : 1; + unsigned int can_poll_w : 1; +} QUIC_REACTOR; + +void ossl_quic_reactor_init(QUIC_REACTOR *rtor, + void (*tick_cb)(QUIC_TICK_RESULT *res, void *arg, + uint32_t flags), + void *tick_cb_arg, + OSSL_TIME initial_tick_deadline); + +void ossl_quic_reactor_set_poll_r(QUIC_REACTOR *rtor, + const BIO_POLL_DESCRIPTOR *r); + +void ossl_quic_reactor_set_poll_w(QUIC_REACTOR *rtor, + const BIO_POLL_DESCRIPTOR *w); + +const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_r(const QUIC_REACTOR *rtor); +const BIO_POLL_DESCRIPTOR *ossl_quic_reactor_get_poll_w(const QUIC_REACTOR *rtor); + +int ossl_quic_reactor_can_poll_r(const QUIC_REACTOR *rtor); +int ossl_quic_reactor_can_poll_w(const QUIC_REACTOR *rtor); + +int ossl_quic_reactor_can_support_poll_descriptor(const QUIC_REACTOR *rtor, + const BIO_POLL_DESCRIPTOR *d); + +int ossl_quic_reactor_net_read_desired(QUIC_REACTOR *rtor); +int ossl_quic_reactor_net_write_desired(QUIC_REACTOR *rtor); + +OSSL_TIME ossl_quic_reactor_get_tick_deadline(QUIC_REACTOR *rtor); + +/* + * Do whatever work can be done, and as much work as can be done. This involves + * e.g. seeing if we can read anything from the network (if we want to), seeing + * if we can write anything to the network (if we want to), etc. + * + * If the CHANNEL_ONLY flag is set, this indicates that we should only + * touch state which is synchronised by the channel mutex. + */ +#define QUIC_REACTOR_TICK_FLAG_CHANNEL_ONLY (1U << 0) + +int ossl_quic_reactor_tick(QUIC_REACTOR *rtor, uint32_t flags); + +/* + * Blocking I/O Adaptation Layer + * ============================= + * + * The blocking I/O adaptation layer implements blocking I/O on top of our + * asynchronous core. + * + * The core mechanism is block_until_pred(), which does not return until pred() + * returns a value other than 0. The blocker uses OS I/O synchronisation + * primitives (e.g. poll(2)) and ticks the reactor until the predicate is + * satisfied. The blocker is not required to call pred() more than once between + * tick calls. + * + * When pred returns a non-zero value, that value is returned by this function. + * This can be used to allow pred() to indicate error conditions and short + * circuit the blocking process. + * + * A return value of -1 is reserved for network polling errors. Therefore this + * return value should not be used by pred() if ambiguity is not desired. Note + * that the predicate function can always arrange its own output mechanism, for + * example by passing a structure of its own as the argument. + * + * If the SKIP_FIRST_TICK flag is set, the first call to reactor_tick() before + * the first call to pred() is skipped. This is useful if it is known that + * ticking the reactor again will not be useful (e.g. because it has already + * been done). + * + * This function assumes a write lock is held for the entire QUIC_CHANNEL. If + * mutex is non-NULL, it must be a lock currently held for write; it will be + * unlocked during any sleep, and then relocked for write afterwards. + * + * Precondition: mutex is NULL or is held for write (unchecked) + * Postcondition: mutex is NULL or is held for write (unless + * CRYPTO_THREAD_write_lock fails) + */ +#define SKIP_FIRST_TICK (1U << 0) + +int ossl_quic_reactor_block_until_pred(QUIC_REACTOR *rtor, + int (*pred)(void *arg), void *pred_arg, + uint32_t flags, + CRYPTO_RWLOCK *mutex); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_rx.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_rx.h new file mode 100644 index 00000000..e26fd356 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_rx.h @@ -0,0 +1,569 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RECORD_RX_H +# define OSSL_QUIC_RECORD_RX_H + +# include +# include "internal/quic_wire_pkt.h" +# include "internal/quic_types.h" +# include "internal/quic_record_util.h" +# include "internal/quic_demux.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Record Layer - RX + * ====================== + */ +typedef struct ossl_qrx_st OSSL_QRX; + +typedef struct ossl_qrx_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + + /* Demux to receive datagrams from. */ + QUIC_DEMUX *demux; + + /* Length of connection IDs used in short-header packets in bytes. */ + size_t short_conn_id_len; + + /* + * Maximum number of deferred datagrams buffered at any one time. + * Suggested value: 32. + */ + size_t max_deferred; + + /* Initial reference PN used for RX. */ + QUIC_PN init_largest_pn[QUIC_PN_SPACE_NUM]; + + /* Initial key phase. For debugging use only; always 0 in real use. */ + unsigned char init_key_phase_bit; +} OSSL_QRX_ARGS; + +/* Instantiates a new QRX. */ +OSSL_QRX *ossl_qrx_new(const OSSL_QRX_ARGS *args); + +/* + * Frees the QRX. All packets obtained using ossl_qrx_read_pkt must already + * have been released by calling ossl_qrx_release_pkt. + * + * You do not need to call ossl_qrx_remove_dst_conn_id first; this function will + * unregister the QRX from the demuxer for all registered destination connection + * IDs (DCIDs) automatically. + */ +void ossl_qrx_free(OSSL_QRX *qrx); + +/* Setters for the msg_callback and msg_callback_arg */ +void ossl_qrx_set_msg_callback(OSSL_QRX *qrx, ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_qrx_set_msg_callback_arg(OSSL_QRX *qrx, + void *msg_callback_arg); + +/* + * DCID Management + * =============== + */ + +/* + * Adds a given DCID to the QRX. The QRX will register the DCID with the demuxer + * so that incoming packets with that DCID are passed to the given QRX. Multiple + * DCIDs may be associated with a QRX at any one time. You will need to add at + * least one DCID after instantiating the QRX. A zero-length DCID is a valid + * input to this function. This function fails if the DCID is already + * registered. + * + * Returns 1 on success or 0 on error. + */ +int ossl_qrx_add_dst_conn_id(OSSL_QRX *qrx, + const QUIC_CONN_ID *dst_conn_id); + +/* + * Remove a DCID previously registered with ossl_qrx_add_dst_conn_id. The DCID + * is unregistered from the demuxer. Fails if the DCID is not registered with + * the demuxer. + * + * Returns 1 on success or 0 on error. + */ +int ossl_qrx_remove_dst_conn_id(OSSL_QRX *qrx, + const QUIC_CONN_ID *dst_conn_id); + +/* + * Secret Management + * ================= + * + * A QRX has several encryption levels (Initial, Handshake, 0-RTT, 1-RTT) and + * two directions (RX, TX). At any given time, key material is managed for each + * (EL, RX/TX) combination. + * + * Broadly, for a given (EL, RX/TX), the following state machine is applicable: + * + * WAITING_FOR_KEYS --[Provide]--> HAVE_KEYS --[Discard]--> | DISCARDED | + * \-------------------------------------[Discard]--> | | + * + * To transition the RX side of an EL from WAITING_FOR_KEYS to HAVE_KEYS, call + * ossl_qrx_provide_secret (for the INITIAL EL, use of + * ossl_quic_provide_initial_secret is recommended). + * + * Once keys have been provisioned for an EL, you call + * ossl_qrx_discard_enc_level to transition the EL to the DISCARDED state. You + * can also call this function to transition directly to the DISCARDED state + * even before any keys have been provisioned for that EL. + * + * The DISCARDED state is terminal for a given EL; you cannot provide a secret + * again for that EL after reaching it. + * + * Incoming packets cannot be processed and decrypted if they target an EL + * not in the HAVE_KEYS state. However, there is a distinction between + * the WAITING_FOR_KEYS and DISCARDED states: + * + * - In the WAITING_FOR_KEYS state, the QRX assumes keys for the given + * EL will eventually arrive. Therefore, if it receives any packet + * for an EL in this state, it buffers it and tries to process it + * again once the EL reaches HAVE_KEYS. + * + * - In the DISCARDED state, the QRX assumes no keys for the given + * EL will ever arrive again. If it receives any packet for an EL + * in this state, it is simply discarded. + * + * If the user wishes to instantiate a new QRX to replace an old one for + * whatever reason, for example to take over for an already established QUIC + * connection, it is important that all ELs no longer being used (i.e., INITIAL, + * 0-RTT, 1-RTT) are transitioned to the DISCARDED state. Otherwise, the QRX + * will assume that keys for these ELs will arrive in future, and will buffer + * any received packets for those ELs perpetually. This can be done by calling + * ossl_qrx_discard_enc_level for all non-1-RTT ELs immediately after + * instantiating the QRX. + * + * The INITIAL EL is not setup automatically when the QRX is instantiated. This + * allows the caller to instead discard it immediately after instantiation of + * the QRX if it is not needed, for example if the QRX is being instantiated to + * take over handling of an existing connection which has already passed the + * INITIAL phase. This avoids the unnecessary derivation of INITIAL keys where + * they are not needed. In the ordinary case, ossl_quic_provide_initial_secret + * should be called immediately after instantiation. + */ + +/* + * Provides a secret to the QRX, which arises due to an encryption level change. + * enc_level is a QUIC_ENC_LEVEL_* value. To initialise the INITIAL encryption + * level, it is recommended to use ossl_quic_provide_initial_secret instead. + * + * You should seek to call this function for a given EL before packets of that + * EL arrive and are processed by the QRX. However, if packets have already + * arrived for a given EL, the QRX will defer processing of them and perform + * processing of them when this function is eventually called for the EL in + * question. + * + * suite_id is a QRL_SUITE_* value which determines the AEAD function used for + * the QRX. + * + * The secret passed is used directly to derive the "quic key", "quic iv" and + * "quic hp" values. + * + * secret_len is the length of the secret buffer in bytes. The buffer must be + * sized correctly to the chosen suite, else the function fails. + * + * This function can only be called once for a given EL, except for the INITIAL + * EL, which can need rekeying when a connection retry occurs. Subsequent calls + * for non-INITIAL ELs fail, as do calls made after a corresponding call to + * ossl_qrx_discard_enc_level for that EL. The secret for a non-INITIAL EL + * cannot be changed after it is set because QUIC has no facility for + * introducing additional key material after an EL is setup. QUIC key updates + * are managed semi-automatically by the QRX but do require some caller handling + * (see below). + * + * md is for internal use and should be NULL. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_qrx_provide_secret(OSSL_QRX *qrx, + uint32_t enc_level, + uint32_t suite_id, + EVP_MD *md, + const unsigned char *secret, + size_t secret_len); + +/* + * Informs the QRX that it can now discard key material for a given EL. The QRX + * will no longer be able to process incoming packets received at that + * encryption level. This function is idempotent and succeeds if the EL has + * already been discarded. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_qrx_discard_enc_level(OSSL_QRX *qrx, uint32_t enc_level); + +/* + * Packet Reception + * ================ + */ + +/* Information about a received packet. */ +typedef struct ossl_qrx_pkt_st { + /* + * Points to a logical representation of the decoded QUIC packet header. The + * data and len fields point to the decrypted QUIC payload (i.e., to a + * sequence of zero or more (potentially malformed) frames to be decoded). + */ + QUIC_PKT_HDR *hdr; + + /* + * Address the packet was received from. If this is not available for this + * packet, this field is NULL (but this can only occur for manually injected + * packets). + */ + const BIO_ADDR *peer; + + /* + * Local address the packet was sent to. If this is not available for this + * packet, this field is NULL. + */ + const BIO_ADDR *local; + + /* + * This is the length of the datagram which contained this packet. Note that + * the datagram may have contained other packets than this. The intended use + * for this is so that the user can enforce minimum datagram sizes (e.g. for + * datagrams containing INITIAL packets), as required by RFC 9000. + */ + size_t datagram_len; + + /* The PN which was decoded for the packet, if the packet has a PN field. */ + QUIC_PN pn; + + /* + * Time the packet was received, or ossl_time_zero() if the demuxer is not + * using a now() function. + */ + OSSL_TIME time; + + /* The QRX which was used to receive the packet. */ + OSSL_QRX *qrx; + + /* + * The key epoch the packet was received with. Always 0 for non-1-RTT + * packets. + */ + uint64_t key_epoch; +} OSSL_QRX_PKT; + +/* + * Tries to read a new decrypted packet from the QRX. + * + * On success, *pkt points to a OSSL_QRX_PKT structure. The structure should be + * freed when no longer needed by calling ossl_qrx_pkt_release(). The structure + * is refcounted; to gain extra references, call ossl_qrx_pkt_up_ref(). This + * will cause a corresponding number of calls to ossl_qrx_pkt_release() to be + * ignored. + * + * The resources referenced by (*pkt)->hdr, (*pkt)->hdr->data and (*pkt)->peer + * have the same lifetime as *pkt. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_qrx_read_pkt(OSSL_QRX *qrx, OSSL_QRX_PKT **pkt); + +/* + * Decrement the reference count for the given packet and frees it if the + * reference count drops to zero. No-op if pkt is NULL. + */ +void ossl_qrx_pkt_release(OSSL_QRX_PKT *pkt); + +/* Increments the reference count for the given packet. */ +void ossl_qrx_pkt_up_ref(OSSL_QRX_PKT *pkt); + +/* + * Returns 1 if there are any already processed (i.e. decrypted) packets waiting + * to be read from the QRX. + */ +int ossl_qrx_processed_read_pending(OSSL_QRX *qrx); + +/* + * Returns 1 if there are any unprocessed (i.e. not yet decrypted) packets + * waiting to be processed by the QRX. These may or may not result in + * successfully decrypted packets once processed. This indicates whether + * unprocessed data is buffered by the QRX, not whether any data is available in + * a kernel socket buffer. + */ +int ossl_qrx_unprocessed_read_pending(OSSL_QRX *qrx); + +/* + * Returns the number of UDP payload bytes received from the network so far + * since the last time this counter was cleared. If clear is 1, clears the + * counter and returns the old value. + * + * The intended use of this is to allow callers to determine how much credit to + * add to their anti-amplification budgets. This is reported separately instead + * of in the OSSL_QRX_PKT structure so that a caller can apply + * anti-amplification credit as soon as a datagram is received, before it has + * necessarily read all processed packets contained within that datagram from + * the QRX. + */ +uint64_t ossl_qrx_get_bytes_received(OSSL_QRX *qrx, int clear); + +/* + * Sets a callback which is called when a packet is received and being validated + * before being queued in the read queue. This is called after packet body + * decryption and authentication to prevent exposing side channels. pn_space is + * a QUIC_PN_SPACE_* value denoting which PN space the PN belongs to. + * + * If this callback returns 1, processing continues normally. + * If this callback returns 0, the packet is discarded. + * + * Other packets in the same datagram will still be processed where possible. + * + * The callback is optional and can be unset by passing NULL for cb. + * cb_arg is an opaque value passed to cb. + */ +typedef int (ossl_qrx_late_validation_cb)(QUIC_PN pn, int pn_space, + void *arg); + +int ossl_qrx_set_late_validation_cb(OSSL_QRX *qrx, + ossl_qrx_late_validation_cb *cb, + void *cb_arg); + +/* + * Forcibly injects a URXE which has been issued by the DEMUX into the QRX for + * processing. This can be used to pass a received datagram to the QRX if it + * would not be correctly routed to the QRX via standard DCID-based routing; for + * example, when handling an incoming Initial packet which is attempting to + * establish a new connection. + */ +void ossl_qrx_inject_urxe(OSSL_QRX *qrx, QUIC_URXE *e); + +/* + * Decryption of 1-RTT packets must be explicitly enabled by calling this + * function. This is to comply with the requirement that we not process 1-RTT + * packets until the handshake is complete, even if we already have 1-RTT + * secrets. Even if a 1-RTT secret is provisioned for the QRX, incoming 1-RTT + * packets will be handled as though no key is available until this function is + * called. Calling this function will then requeue any such deferred packets for + * processing. + */ +void ossl_qrx_allow_1rtt_processing(OSSL_QRX *qrx); + +/* + * Key Update (RX) + * =============== + * + * Key update on the RX side is a largely but not entirely automatic process. + * + * Key update is initially triggered by receiving a 1-RTT packet with a + * different Key Phase value. This could be caused by an attacker in the network + * flipping random bits, therefore such a key update is tentative until the + * packet payload is successfully decrypted and authenticated by the AEAD with + * the 'next' keys. These 'next' keys then become the 'current' keys and the + * 'current' keys then become the 'previous' keys. The 'previous' keys must be + * kept around temporarily as some packets may still be in flight in the network + * encrypted with the old keys. If the old Key Phase value is X and the new Key + * Phase Value is Y (where obviously X != Y), this creates an ambiguity as any + * new packet received with a KP of X could either be an attempt to initiate yet + * another key update right after the last one, or an old packet encrypted + * before the key update. + * + * RFC 9001 provides some guidance on handling this issue: + * + * Strategy 1: + * Three keys, disambiguation using packet numbers + * + * "A recovered PN that is lower than any PN from the current KP uses the + * previous packet protection keys; a recovered PN that is higher than any + * PN from the current KP requires use of the next packet protection + * keys." + * + * Strategy 2: + * Two keys and a timer + * + * "Alternatively, endpoints can retain only two sets of packet protection + * keys, swapping previous keys for next after enough time has passed to + * allow for reordering in the network. In this case, the KP bit alone can + * be used to select keys." + * + * Strategy 2 is more efficient (we can keep fewer cipher contexts around) and + * should cover all actually possible network conditions. It also allows a delay + * after we make the 'next' keys our 'current' keys before we generate new + * 'next' keys, which allows us to mitigate against malicious peers who try to + * initiate an excessive number of key updates. + * + * We therefore model the following state machine: + * + * + * PROVISIONED + * _______________________________ + * | | + * UNPROVISIONED --|----> NORMAL <----------\ |------> DISCARDED + * | | | | + * | | | | + * | v | | + * | UPDATING | | + * | | | | + * | | | | + * | v | | + * | COOLDOWN | | + * | | | | + * | | | | + * | \---------------| | + * |_______________________________| + * + * + * The RX starts (once a secret has been provisioned) in the NORMAL state. In + * the NORMAL state, the current expected value of the Key Phase bit is + * recorded. When a flipped Key Phase bit is detected, the RX attempts to + * decrypt and authenticate the received packet with the 'next' keys rather than + * the 'current' keys. If (and only if) this authentication is successful, we + * move to the UPDATING state. (An attacker in the network could flip + * the Key Phase bit randomly, so it is essential we do nothing until AEAD + * authentication is complete.) + * + * In the UPDATING state, we know a key update is occurring and record + * the new Key Phase bit value as the newly current value, but we still keep the + * old keys around so that we can still process any packets which were still in + * flight when the key update was initiated. In the UPDATING state, a + * Key Phase bit value different to the current expected value is treated not as + * the initiation of another key update, but a reference to our old keys. + * + * Eventually we will be reasonably sure we are not going to receive any more + * packets with the old keys. At this point, we can transition to the COOLDOWN + * state. This transition occurs automatically after a certain amount of time; + * RFC 9001 recommends it be the PTO interval, which relates to our RTT to the + * peer. The duration also SHOULD NOT exceed three times the PTO to assist with + * maintaining PFS. + * + * In the COOLDOWN phase, the old keys have been securely erased and only one + * set of keys can be used: the current keys. If a packet is received with a Key + * Phase bit value different to the current Key Phase Bit value, this is treated + * as a request for a Key Update, but this request is ignored and the packet is + * treated as malformed. We do this to allow mitigation against malicious peers + * trying to initiate an excessive number of Key Updates. The timeout for the + * transition from UPDATING to COOLDOWN is recommended as adequate for + * this purpose in itself by the RFC, so the normal additional timeout value for + * the transition from COOLDOWN to normal is zero (immediate transition). + * + * A summary of each state: + * + * Epoch Exp KP Uses Keys KS0 KS1 If Non-Expected KP Bit + * ----- ------ --------- ------ ----- ---------------------- + * NORMAL 0 0 Keyset 0 Gen 0 Gen 1 → UPDATING + * UPDATING 1 1 Keyset 1 Gen 0 Gen 1 Use Keyset 0 + * COOLDOWN 1 1 Keyset 1 Erased Gen 1 Ignore Packet (*) + * + * NORMAL 1 1 Keyset 1 Gen 2 Gen 1 → UPDATING + * UPDATING 2 0 Keyset 0 Gen 2 Gen 1 Use Keyset 1 + * COOLDOWN 2 0 Keyset 0 Gen 2 Erased Ignore Packet (*) + * + * (*) Actually implemented by attempting to decrypt the packet with the + * wrong keys (which ultimately has the same outcome), as recommended + * by RFC 9001 to avoid creating timing channels. + * + * Note that the key material for the next key generation ("key epoch") is + * always kept in the NORMAL state (necessary to avoid side-channel attacks). + * This material is derived during the transition from COOLDOWN to NORMAL. + * + * Note that when a peer initiates a Key Update, we MUST also initiate a Key + * Update as per the RFC. The caller is responsible for detecting this condition + * and making the necessary calls to the TX side by detecting changes to the + * return value of ossl_qrx_get_key_epoch(). + * + * The above states (NORMAL, UPDATING, COOLDOWN) can themselves be + * considered substates of the PROVISIONED state. Providing a secret to the QRX + * for an EL transitions from UNPROVISIONED, the initial state, to PROVISIONED + * (NORMAL). Dropping key material for an EL transitions from whatever the + * current substate of the PROVISIONED state is to the DISCARDED state, which is + * the terminal state. + * + * Note that non-1RTT ELs cannot undergo key update, therefore a non-1RTT EL is + * always in the NORMAL substate if it is in the PROVISIONED state. + */ + +/* + * Return the current RX key epoch for the 1-RTT encryption level. This is + * initially zero and is incremented by one for every Key Update successfully + * signalled by the peer. If the 1-RTT EL has not yet been provisioned or has + * been discarded, returns UINT64_MAX. + * + * A necessary implication of this API is that the least significant bit of the + * returned value corresponds to the currently expected Key Phase bit, though + * callers are not anticipated to have any need of this information. + * + * It is not possible for the returned value to overflow, as a QUIC connection + * cannot support more than 2**62 packet numbers, and a connection must be + * terminated if this limit is reached. + * + * The caller should use this function to detect when the key epoch has changed + * and use it to initiate a key update on the TX side. + * + * The value returned by this function increments specifically at the transition + * from the NORMAL to the UPDATING state discussed above. + */ +uint64_t ossl_qrx_get_key_epoch(OSSL_QRX *qrx); + +/* + * Sets an optional callback which will be called when the key epoch changes. + * + * The callback is optional and can be unset by passing NULL for cb. + * cb_arg is an opaque value passed to cb. pn is the PN of the packet. + * Since key update is only supported for 1-RTT packets, the PN is always + * in the Application Data PN space. +*/ +typedef void (ossl_qrx_key_update_cb)(QUIC_PN pn, void *arg); + +int ossl_qrx_set_key_update_cb(OSSL_QRX *qrx, + ossl_qrx_key_update_cb *cb, void *cb_arg); + +/* + * Relates to the 1-RTT encryption level. The caller should call this after the + * UPDATING state is reached, after a timeout to be determined by the caller. + * + * This transitions from the UPDATING state to the COOLDOWN state (if + * still in the UPDATING state). If normal is 1, then transitions from + * the COOLDOWN state to the NORMAL state. Both transitions can be performed at + * once if desired. + * + * If in the normal state, or if in the COOLDOWN state and normal is 0, this is + * a no-op and returns 1. Returns 0 if the 1-RTT EL has not been provisioned or + * has been dropped. + * + * It is essential that the caller call this within a few PTO intervals of a key + * update occurring (as detected by the caller in a call to + * ossl_qrx_key_get_key_epoch()), as otherwise the peer will not be able to + * perform a Key Update ever again. + */ +int ossl_qrx_key_update_timeout(OSSL_QRX *qrx, int normal); + + +/* + * Key Expiration + * ============== + */ + +/* + * Returns the number of seemingly forged packets which have been received by + * the QRX. If this value reaches the value returned by + * ossl_qrx_get_max_epoch_forged_pkt_count() for a given EL, all further + * received encrypted packets for that EL will be discarded without processing. + * + * Note that the forged packet limit is for the connection lifetime, thus it is + * not reset by a key update. It is suggested that the caller terminate the + * connection a reasonable margin before the limit is reached. However, the + * exact limit imposed does vary by EL due to the possibility that different ELs + * use different AEADs. + */ +uint64_t ossl_qrx_get_cur_forged_pkt_count(OSSL_QRX *qrx); + +/* + * Returns the maximum number of forged packets which the record layer will + * permit to be verified using this QRX instance. + */ +uint64_t ossl_qrx_get_max_forged_pkt_count(OSSL_QRX *qrx, + uint32_t enc_level); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_tx.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_tx.h new file mode 100644 index 00000000..f3b798fe --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_tx.h @@ -0,0 +1,383 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RECORD_TX_H +# define OSSL_QUIC_RECORD_TX_H + +# include +# include "internal/quic_wire_pkt.h" +# include "internal/quic_types.h" +# include "internal/quic_record_util.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Record Layer - TX + * ====================== + */ +typedef struct ossl_qtx_iovec_st { + const unsigned char *buf; + size_t buf_len; +} OSSL_QTX_IOVEC; + +typedef struct ossl_qtx_st OSSL_QTX; + +typedef int (*ossl_mutate_packet_cb)(const QUIC_PKT_HDR *hdrin, + const OSSL_QTX_IOVEC *iovecin, size_t numin, + QUIC_PKT_HDR **hdrout, + const OSSL_QTX_IOVEC **iovecout, + size_t *numout, + void *arg); + +typedef void (*ossl_finish_mutate_cb)(void *arg); + +typedef struct ossl_qtx_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + + /* BIO to transmit to. */ + BIO *bio; + + /* Maximum datagram payload length (MDPL) for TX purposes. */ + size_t mdpl; +} OSSL_QTX_ARGS; + +/* Instantiates a new QTX. */ +OSSL_QTX *ossl_qtx_new(const OSSL_QTX_ARGS *args); + +/* Frees the QTX. */ +void ossl_qtx_free(OSSL_QTX *qtx); + +/* Set mutator callbacks for test framework support */ +void ossl_qtx_set_mutator(OSSL_QTX *qtx, ossl_mutate_packet_cb mutatecb, + ossl_finish_mutate_cb finishmutatecb, void *mutatearg); + +/* Setters for the msg_callback and the msg_callback_arg */ +void ossl_qtx_set_msg_callback(OSSL_QTX *qtx, ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_qtx_set_msg_callback_arg(OSSL_QTX *qtx, void *msg_callback_arg); + +/* + * Secret Management + * ----------------- + */ + +/* + * Provides a secret to the QTX, which arises due to an encryption level change. + * enc_level is a QUIC_ENC_LEVEL_* value. + * + * This function can be used to initialise the INITIAL encryption level, but you + * should not do so directly; see the utility function + * ossl_qrl_provide_initial_secret() instead, which can initialise the INITIAL + * encryption level of a QRX and QTX simultaneously without duplicating certain + * key derivation steps. + * + * You must call this function for a given EL before transmitting packets at + * that EL using this QTX, otherwise ossl_qtx_write_pkt will fail. + * + * suite_id is a QRL_SUITE_* value which determines the AEAD function used for + * the QTX. + * + * The secret passed is used directly to derive the "quic key", "quic iv" and + * "quic hp" values. + * + * secret_len is the length of the secret buffer in bytes. The buffer must be + * sized correctly to the chosen suite, else the function fails. + * + * This function can only be called once for a given EL, except for the INITIAL + * EL, as the INITIAL EL can need to be rekeyed if connection retry occurs. + * Subsequent calls for non-INITIAL ELs fail. Calls made after a corresponding + * call to ossl_qtx_discard_enc_level for a given EL also fail, including for + * the INITIAL EL. The secret for a non-INITIAL EL cannot be changed after it is + * set because QUIC has no facility for introducing additional key material + * after an EL is setup. (QUIC key updates generate new keys from existing key + * material and do not introduce new entropy into a connection's key material.) + * + * Returns 1 on success or 0 on failure. + */ +int ossl_qtx_provide_secret(OSSL_QTX *qtx, + uint32_t enc_level, + uint32_t suite_id, + EVP_MD *md, + const unsigned char *secret, + size_t secret_len); + +/* + * Informs the QTX that it can now discard key material for a given EL. The QTX + * will no longer be able to generate packets at that EL. This function is + * idempotent and succeeds if the EL has already been discarded. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_qtx_discard_enc_level(OSSL_QTX *qtx, uint32_t enc_level); + +/* Returns 1 if the given encryption level is provisioned. */ +int ossl_qtx_is_enc_level_provisioned(OSSL_QTX *qtx, uint32_t enc_level); + +/* + * Given the value ciphertext_len representing an encrypted packet payload + * length in bytes, determines how many plaintext bytes it will decrypt to. + * Returns 0 if the specified EL is not provisioned or ciphertext_len is too + * small. The result is written to *plaintext_len. + */ +int ossl_qtx_calculate_plaintext_payload_len(OSSL_QTX *qtx, uint32_t enc_level, + size_t ciphertext_len, + size_t *plaintext_len); + +/* + * Given the value plaintext_len represented a plaintext packet payload length + * in bytes, determines how many ciphertext bytes it will encrypt to. The value + * output does not include packet headers. Returns 0 if the specified EL is not + * provisioned. The result is written to *ciphertext_len. + */ +int ossl_qtx_calculate_ciphertext_payload_len(OSSL_QTX *qtx, uint32_t enc_level, + size_t plaintext_len, + size_t *ciphertext_len); + +uint32_t ossl_qrl_get_suite_cipher_tag_len(uint32_t suite_id); + + +/* + * Packet Transmission + * ------------------- + */ + +typedef struct ossl_qtx_pkt_st { + /* Logical packet header to be serialized. */ + QUIC_PKT_HDR *hdr; + + /* + * iovecs expressing the logical packet payload buffer. Zero-length entries + * are permitted. + */ + const OSSL_QTX_IOVEC *iovec; + size_t num_iovec; + + /* Destination address. Will be passed through to the BIO if non-NULL. */ + const BIO_ADDR *peer; + + /* + * Local address (optional). Specify as non-NULL only if TX BIO + * has local address support enabled. + */ + const BIO_ADDR *local; + + /* + * Logical PN. Used for encryption. This will automatically be encoded to + * hdr->pn, which need not be initialized. + */ + QUIC_PN pn; + + /* Packet flags. Zero or more OSSL_QTX_PKT_FLAG_* values. */ + uint32_t flags; +} OSSL_QTX_PKT; + +/* + * More packets will be written which should be coalesced into a single + * datagram; do not send this packet yet. To use this, set this flag for all + * packets but the final packet in a datagram, then send the final packet + * without this flag set. + * + * This flag is not a guarantee and the QTX may transmit immediately anyway if + * it is not possible to fit any more packets in the current datagram. + * + * If the caller change its mind and needs to cause a packet queued with + * COALESCE after having passed it to this function but without writing another + * packet, it should call ossl_qtx_flush_pkt(). + */ +#define OSSL_QTX_PKT_FLAG_COALESCE (1U << 0) + +/* + * Writes a packet. + * + * *pkt need be valid only for the duration of the call to this function. + * + * pkt->hdr->data and pkt->hdr->len are unused. The payload buffer is specified + * via an array of OSSL_QTX_IOVEC structures. The API is designed to support + * single-copy transmission; data is copied from the iovecs as it is encrypted + * into an internal staging buffer for transmission. + * + * The function may modify and clobber pkt->hdr->data, pkt->hdr->len, + * pkt->hdr->key_phase and pkt->hdr->pn for its own internal use. No other + * fields of pkt or pkt->hdr will be modified. + * + * It is the callers responsibility to determine how long the PN field in the + * encoded packet should be by setting pkt->hdr->pn_len. This function takes + * care of the PN encoding. Set pkt->pn to the desired PN. + * + * Note that 1-RTT packets do not have a DCID Length field, therefore the DCID + * length must be understood contextually. This function assumes the caller + * knows what it is doing and will serialize a DCID of whatever length is given. + * It is the caller's responsibility to ensure it uses a consistent DCID length + * for communication with any given set of remote peers. + * + * The packet is queued regardless of whether it is able to be sent immediately. + * This enables packets to be batched and sent at once on systems which support + * system calls to send multiple datagrams in a single system call (see + * BIO_sendmmsg). To flush queued datagrams to the network, see + * ossl_qtx_flush_net(). + * + * Returns 1 on success or 0 on failure. + */ +int ossl_qtx_write_pkt(OSSL_QTX *qtx, const OSSL_QTX_PKT *pkt); + +/* + * Finish any incomplete datagrams for transmission which were flagged for + * coalescing. If there is no current coalescing datagram, this is a no-op. + */ +void ossl_qtx_finish_dgram(OSSL_QTX *qtx); + +/* + * (Attempt to) flush any datagrams which are queued for transmission. Note that + * this does not cancel coalescing; call ossl_qtx_finish_dgram() first if that + * is desired. The queue is drained into the OS's sockets as much as possible. + * To determine if there is still data to be sent after calling this function, + * use ossl_qtx_get_queue_len_bytes(). + * + * Returns one of the following values: + * + * QTX_FLUSH_NET_RES_OK + * Either no packets are currently queued for transmission, + * or at least one packet was successfully submitted. + * + * QTX_FLUSH_NET_RES_TRANSIENT_FAIL + * The underlying network write BIO indicated a transient error + * (e.g. buffers full). + * + * QTX_FLUSH_NET_RES_PERMANENT_FAIL + * Internal error (e.g. assertion or allocation error) + * or the underlying network write BIO indicated a non-transient + * error. + */ +#define QTX_FLUSH_NET_RES_OK 1 +#define QTX_FLUSH_NET_RES_TRANSIENT_FAIL (-1) +#define QTX_FLUSH_NET_RES_PERMANENT_FAIL (-2) + +int ossl_qtx_flush_net(OSSL_QTX *qtx); + +/* + * Diagnostic function. If there is any datagram pending transmission, pops it + * and writes the details of the datagram as they would have been passed to + * *msg. Returns 1, or 0 if there are no datagrams pending. For test use only. + */ +int ossl_qtx_pop_net(OSSL_QTX *qtx, BIO_MSG *msg); + +/* Returns number of datagrams which are fully-formed but not yet sent. */ +size_t ossl_qtx_get_queue_len_datagrams(OSSL_QTX *qtx); + +/* + * Returns number of payload bytes across all datagrams which are fully-formed + * but not yet sent. Does not count any incomplete coalescing datagram. + */ +size_t ossl_qtx_get_queue_len_bytes(OSSL_QTX *qtx); + +/* + * Returns number of bytes in the current coalescing datagram, or 0 if there is + * no current coalescing datagram. Returns 0 after a call to + * ossl_qtx_finish_dgram(). + */ +size_t ossl_qtx_get_cur_dgram_len_bytes(OSSL_QTX *qtx); + +/* + * Returns number of queued coalesced packets which have not been put into a + * datagram yet. If this is non-zero, ossl_qtx_flush_pkt() needs to be called. + */ +size_t ossl_qtx_get_unflushed_pkt_count(OSSL_QTX *qtx); + +/* + * Change the BIO being used by the QTX. May be NULL if actual transmission is + * not currently required. Does not up-ref the BIO; the caller is responsible + * for ensuring the lifetime of the BIO exceeds the lifetime of the QTX. + */ +void ossl_qtx_set_bio(OSSL_QTX *qtx, BIO *bio); + +/* Changes the MDPL. */ +int ossl_qtx_set_mdpl(OSSL_QTX *qtx, size_t mdpl); + +/* Retrieves the current MDPL. */ +size_t ossl_qtx_get_mdpl(OSSL_QTX *qtx); + + +/* + * Key Update + * ---------- + * + * For additional discussion of key update considerations, see QRX header file. + */ + +/* + * Triggers a key update. The key update will be started by inverting the Key + * Phase bit of the next packet transmitted; no key update occurs until the next + * packet is transmitted. Thus, this function should generally be called + * immediately before queueing the next packet. + * + * There are substantial requirements imposed by RFC 9001 on under what + * circumstances a key update can be initiated. The caller is responsible for + * meeting most of these requirements. For example, this function cannot be + * called too soon after a previous key update has occurred. Key updates also + * cannot be initiated until the 1-RTT encryption level is reached. + * + * As a sanity check, this function will fail and return 0 if the non-1RTT + * encryption levels have not yet been dropped. + * + * The caller may decide itself to initiate a key update, but it also MUST + * initiate a key update where it detects that the peer has initiated a key + * update. The caller is responsible for initiating a TX key update by calling + * this function in this circumstance; thus, the caller is responsible for + * coupling the RX and TX QUIC record layers in this way. + */ +int ossl_qtx_trigger_key_update(OSSL_QTX *qtx); + + +/* + * Key Expiration + * -------------- + */ + +/* + * Returns the number of packets which have been encrypted for transmission with + * the current set of TX keys (the current "TX key epoch"). Reset to zero after + * a key update and incremented for each packet queued. If enc_level is not + * valid or relates to an EL which is not currently available, returns + * UINT64_MAX. + */ +uint64_t ossl_qtx_get_cur_epoch_pkt_count(OSSL_QTX *qtx, uint32_t enc_level); + +/* + * Returns the maximum number of packets which the record layer will permit to + * be encrypted using the current set of TX keys. If this limit is reached (that + * is, if the counter returned by ossl_qrx_tx_get_cur_epoch_pkt_count() reaches + * this value), as a safety measure, the QTX will not permit any further packets + * to be queued. All calls to ossl_qrx_write_pkt that try to send packets of a + * kind which need to be encrypted will fail. It is not possible to recover from + * this condition and the QTX must then be destroyed; therefore, callers should + * ensure they always trigger a key update well in advance of reaching this + * limit. + * + * The value returned by this function is based on the ciphersuite configured + * for the given encryption level. If keys have not been provisioned for the + * specified enc_level or the enc_level argument is invalid, this function + * returns UINT64_MAX, which is not a valid value. Note that it is not possible + * to perform a key update at any encryption level other than 1-RTT, therefore + * if this limit is reached at earlier encryption levels (which should not be + * possible) the connection must be terminated. Since this condition precludes + * the transmission of further packets, the only possible signalling of such an + * error condition to a peer is a Stateless Reset packet. + */ +uint64_t ossl_qtx_get_max_epoch_pkt_count(OSSL_QTX *qtx, uint32_t enc_level); + +/* + * Get the 1-RTT EL key epoch number for the QTX. This is intended for + * diagnostic purposes. Returns 0 if 1-RTT EL is not provisioned yet. + */ +uint64_t ossl_qtx_get_key_epoch(OSSL_QTX *qtx); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_util.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_util.h new file mode 100644 index 00000000..97e630d9 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_record_util.h @@ -0,0 +1,116 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RECORD_UTIL_H +# define OSSL_QUIC_RECORD_UTIL_H + +# include +# include "internal/quic_types.h" + +# ifndef OPENSSL_NO_QUIC + +struct ossl_qrx_st; +struct ossl_qtx_st; + +/* + * QUIC Key Derivation Utilities + * ============================= + */ + +/* HKDF-Extract(salt, IKM) (RFC 5869) */ +int ossl_quic_hkdf_extract(OSSL_LIB_CTX *libctx, + const char *propq, + const EVP_MD *md, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + unsigned char *out, size_t out_len); + +/* + * A QUIC client sends its first INITIAL packet with a random DCID, which + * is used to compute the secrets used for INITIAL packet encryption in both + * directions (both client-to-server and server-to-client). + * + * This function performs the necessary DCID-based key derivation, and then + * provides the derived key material for the INITIAL encryption level to a QRX + * instance, a QTX instance, or both. + * + * This function derives the necessary key material and then: + * - if qrx is non-NULL, provides the appropriate secret to it; + * - if qtx is non-NULL, provides the appropriate secret to it. + * + * If both qrx and qtx are NULL, this is a no-op. This function is equivalent to + * making the appropriate calls to ossl_qrx_provide_secret() and + * ossl_qtx_provide_secret(). + * + * It is possible to use a QRX or QTX without ever calling this, for example if + * there is no desire to handle INITIAL packets (e.g. if a QRX/QTX is + * instantiated to succeed a previous QRX/QTX and handle a connection which is + * already established). However in this case you should make sure you call + * ossl_qrx_discard_enc_level(); see the header for that function for more + * details. Calling ossl_qtx_discard_enc_level() is not essential but could + * protect against programming errors. + * + * Returns 1 on success or 0 on error. + */ +int ossl_quic_provide_initial_secret(OSSL_LIB_CTX *libctx, + const char *propq, + const QUIC_CONN_ID *dst_conn_id, + int is_server, + struct ossl_qrx_st *qrx, + struct ossl_qtx_st *qtx); + +/* + * QUIC Record Layer Ciphersuite Info + * ================================== + */ + +/* Available QUIC Record Layer (QRL) ciphersuites. */ +# define QRL_SUITE_AES128GCM 1 /* SHA256 */ +# define QRL_SUITE_AES256GCM 2 /* SHA384 */ +# define QRL_SUITE_CHACHA20POLY1305 3 /* SHA256 */ + +/* Returns cipher name in bytes or NULL if suite ID is invalid. */ +const char *ossl_qrl_get_suite_cipher_name(uint32_t suite_id); + +/* Returns hash function name in bytes or NULL if suite ID is invalid. */ +const char *ossl_qrl_get_suite_md_name(uint32_t suite_id); + +/* Returns secret length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_secret_len(uint32_t suite_id); + +/* Returns key length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_cipher_key_len(uint32_t suite_id); + +/* Returns IV length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_cipher_iv_len(uint32_t suite_id); + +/* Returns AEAD auth tag length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_cipher_tag_len(uint32_t suite_id); + +/* Returns a QUIC_HDR_PROT_CIPHER_* value or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_hdr_prot_cipher_id(uint32_t suite_id); + +/* Returns header protection key length in bytes or 0 if suite ID is invalid. */ +uint32_t ossl_qrl_get_suite_hdr_prot_key_len(uint32_t suite_id); + +/* + * Returns maximum number of packets which may be safely encrypted with a suite + * or 0 if suite ID is invalid. + */ +uint64_t ossl_qrl_get_suite_max_pkt(uint32_t suite_id); + +/* + * Returns maximum number of RX'd packets which may safely fail AEAD decryption + * for a given suite or 0 if suite ID is invalid. + */ +uint64_t ossl_qrl_get_suite_max_forged_pkt(uint32_t suite_id); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_rx_depack.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_rx_depack.h new file mode 100644 index 00000000..c90964a7 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_rx_depack.h @@ -0,0 +1,21 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_RX_DEPACK_H +# define OSSL_QUIC_RX_DEPACK_H + +# include "internal/quic_channel.h" + +# ifndef OPENSSL_NO_QUIC + +int ossl_quic_handle_frames(QUIC_CHANNEL *qc, OSSL_QRX_PKT *qpacket); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_sf_list.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_sf_list.h new file mode 100644 index 00000000..8ed1dcb1 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_sf_list.h @@ -0,0 +1,151 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_SF_LIST_H +# define OSSL_QUIC_SF_LIST_H + +#include "internal/common.h" +#include "internal/uint_set.h" +#include "internal/quic_record_rx.h" + +/* + * Stream frame list + * ================= + * + * This data structure supports similar operations as uint64 set but + * it has slightly different invariants and also carries data associated with + * the ranges in the list. + * + * Operations: + * Insert frame (optimized insertion at the beginning and at the end). + * Iterated peek into the frame(s) from the beginning. + * Dropping frames from the beginning up to an offset (exclusive). + * + * Invariant: The frames in the list are sorted by the start and end bounds. + * Invariant: There are no fully overlapping frames or frames that would + * be fully encompassed by another frame in the list. + * Invariant: No frame has start > end. + * Invariant: The range start is inclusive the end is exclusive to be + * able to mark an empty frame. + * Invariant: The offset never points further than into the first frame. + */ +# ifndef OPENSSL_NO_QUIC + +typedef struct stream_frame_st STREAM_FRAME; + +typedef struct sframe_list_st { + STREAM_FRAME *head, *tail; + /* Is the tail frame final. */ + unsigned int fin; + /* Number of stream frames in the list. */ + size_t num_frames; + /* Offset of data not yet dropped */ + uint64_t offset; + /* Is head locked ? */ + int head_locked; + /* Cleanse data on release? */ + int cleanse; +} SFRAME_LIST; + +/* + * Initializes the stream frame list fl. + */ +void ossl_sframe_list_init(SFRAME_LIST *fl); + +/* + * Destroys the stream frame list fl releasing any data + * still present inside it. + */ +void ossl_sframe_list_destroy(SFRAME_LIST *fl); + +/* + * Insert a stream frame data into the list. + * The data covers an offset range (range.start is inclusive, + * range.end is exclusive). + * fin should be set if this is the final frame of the stream. + * Returns an error if a frame cannot be inserted - due to + * STREAM_FRAME allocation error, or in case of erroneous + * fin flag (this is an ossl_assert() check so a caller must + * check it on its own too). + */ +int ossl_sframe_list_insert(SFRAME_LIST *fl, UINT_RANGE *range, + OSSL_QRX_PKT *pkt, + const unsigned char *data, int fin); + +/* + * Iterator to peek at the contiguous frames at the beginning + * of the frame list fl. + * The *data covers an offset range (range.start is inclusive, + * range.end is exclusive). + * *fin is set if this is the final frame of the stream. + * Opaque iterator *iter can be used to peek at the subsequent + * frame if there is any without any gap before it. + * Returns 1 on success. + * Returns 0 if there is no further contiguous frame. In that + * case *fin is set, if the end of the stream is reached. + */ +int ossl_sframe_list_peek(const SFRAME_LIST *fl, void **iter, + UINT_RANGE *range, const unsigned char **data, + int *fin); + +/* + * Drop all frames up to the offset limit. + * Also unlocks the head frame if locked. + * Returns 1 on success. + * Returns 0 when trying to drop frames at offsets that were not + * received yet. (ossl_assert() is used to check, so this is an invalid call.) + */ +int ossl_sframe_list_drop_frames(SFRAME_LIST *fl, uint64_t limit); + +/* + * Locks and returns the head frame of fl if it is readable - read offset is + * at the beginning or middle of the frame. + * range is set to encompass the not yet read part of the head frame, + * data pointer is set to appropriate offset within the frame if the read + * offset points in the middle of the frame, + * fin is set to 1 if the head frame is also the tail frame. + * Returns 1 on success, 0 if there is no readable data or the head + * frame is already locked. + */ +int ossl_sframe_list_lock_head(SFRAME_LIST *fl, UINT_RANGE *range, + const unsigned char **data, + int *fin); + +/* + * Just returns whether the head frame is locked by previous + * ossl_sframe_list_lock_head() call. + */ +int ossl_sframe_list_is_head_locked(SFRAME_LIST *fl); + +/* + * Callback function type to write stream frame data to some + * side storage before the packet containing the frame data + * is released. + * It should return 1 on success or 0 if there is not enough + * space available in the side storage. + */ +typedef int (sframe_list_write_at_cb)(uint64_t logical_offset, + const unsigned char *buf, + size_t buf_len, + void *cb_arg); + +/* + * Move the frame data in all the stream frames in the list fl + * from the packets to the side storage using the write_at_cb + * callback. + * Returns 1 if all the calls to the callback return 1. + * If the callback returns 0, the function stops processing further + * frames and returns 0. + */ +int ossl_sframe_list_move_data(SFRAME_LIST *fl, + sframe_list_write_at_cb *write_at_cb, + void *cb_arg); +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ssl.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ssl.h new file mode 100644 index 00000000..52d4527c --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_ssl.h @@ -0,0 +1,132 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_SSL_H +# define OSSL_QUIC_SSL_H + +# include +# include +# include "internal/quic_record_rx.h" /* OSSL_QRX */ +# include "internal/quic_ackm.h" /* OSSL_ACKM */ +# include "internal/quic_channel.h" /* QUIC_CHANNEL */ + +# ifndef OPENSSL_NO_QUIC + +__owur SSL *ossl_quic_new(SSL_CTX *ctx); +__owur int ossl_quic_init(SSL *s); +void ossl_quic_deinit(SSL *s); +void ossl_quic_free(SSL *s); +int ossl_quic_reset(SSL *s); +int ossl_quic_clear(SSL *s); +__owur int ossl_quic_accept(SSL *s); +__owur int ossl_quic_connect(SSL *s); +__owur int ossl_quic_read(SSL *s, void *buf, size_t len, size_t *readbytes); +__owur int ossl_quic_peek(SSL *s, void *buf, size_t len, size_t *readbytes); +__owur int ossl_quic_write(SSL *s, const void *buf, size_t len, size_t *written); +__owur long ossl_quic_ctrl(SSL *s, int cmd, long larg, void *parg); +__owur long ossl_quic_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +__owur long ossl_quic_callback_ctrl(SSL *s, int cmd, void (*fp) (void)); +__owur long ossl_quic_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp) (void)); +__owur size_t ossl_quic_pending(const SSL *s); +__owur int ossl_quic_key_update(SSL *s, int update_type); +__owur int ossl_quic_get_key_update_type(const SSL *s); +__owur const SSL_CIPHER *ossl_quic_get_cipher_by_char(const unsigned char *p); +__owur int ossl_quic_num_ciphers(void); +__owur const SSL_CIPHER *ossl_quic_get_cipher(unsigned int u); +int ossl_quic_renegotiate_check(SSL *ssl, int initok); + +typedef struct quic_conn_st QUIC_CONNECTION; +typedef struct quic_xso_st QUIC_XSO; + +int ossl_quic_do_handshake(SSL *s); +void ossl_quic_set_connect_state(SSL *s); +void ossl_quic_set_accept_state(SSL *s); + +__owur int ossl_quic_has_pending(const SSL *s); +__owur int ossl_quic_handle_events(SSL *s); +__owur int ossl_quic_get_event_timeout(SSL *s, struct timeval *tv, + int *is_infinite); +OSSL_TIME ossl_quic_get_event_deadline(SSL *s); +__owur int ossl_quic_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *d); +__owur int ossl_quic_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *d); +__owur int ossl_quic_get_net_read_desired(SSL *s); +__owur int ossl_quic_get_net_write_desired(SSL *s); +__owur int ossl_quic_get_error(const SSL *s, int i); +__owur int ossl_quic_want(const SSL *s); +__owur int ossl_quic_conn_get_blocking_mode(const SSL *s); +__owur int ossl_quic_conn_set_blocking_mode(SSL *s, int blocking); +__owur int ossl_quic_conn_shutdown(SSL *s, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); +__owur int ossl_quic_conn_stream_conclude(SSL *s); +void ossl_quic_conn_set0_net_rbio(SSL *s, BIO *net_wbio); +void ossl_quic_conn_set0_net_wbio(SSL *s, BIO *net_wbio); +BIO *ossl_quic_conn_get_net_rbio(const SSL *s); +BIO *ossl_quic_conn_get_net_wbio(const SSL *s); +__owur int ossl_quic_conn_set_initial_peer_addr(SSL *s, + const BIO_ADDR *peer_addr); +__owur SSL *ossl_quic_conn_stream_new(SSL *s, uint64_t flags); +__owur SSL *ossl_quic_get0_connection(SSL *s); +__owur int ossl_quic_get_stream_type(SSL *s); +__owur uint64_t ossl_quic_get_stream_id(SSL *s); +__owur int ossl_quic_is_stream_local(SSL *s); +__owur int ossl_quic_set_default_stream_mode(SSL *s, uint32_t mode); +__owur SSL *ossl_quic_detach_stream(SSL *s); +__owur int ossl_quic_attach_stream(SSL *conn, SSL *stream); +__owur int ossl_quic_set_incoming_stream_policy(SSL *s, int policy, + uint64_t aec); +__owur SSL *ossl_quic_accept_stream(SSL *s, uint64_t flags); +__owur size_t ossl_quic_get_accept_stream_queue_len(SSL *s); + +__owur int ossl_quic_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +__owur int ossl_quic_get_stream_read_state(SSL *ssl); +__owur int ossl_quic_get_stream_write_state(SSL *ssl); +__owur int ossl_quic_get_stream_read_error_code(SSL *ssl, + uint64_t *app_error_code); +__owur int ossl_quic_get_stream_write_error_code(SSL *ssl, + uint64_t *app_error_code); +__owur int ossl_quic_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + +uint64_t ossl_quic_set_options(SSL *s, uint64_t opts); +uint64_t ossl_quic_clear_options(SSL *s, uint64_t opts); +uint64_t ossl_quic_get_options(const SSL *s); + +/* Modifies write buffer size for a stream. */ +__owur int ossl_quic_set_write_buffer_size(SSL *s, size_t size); + +/* + * Used to override ossl_time_now() for debug purposes. While this may be + * overridden at any time, expect strange results if you change it after + * connecting. + */ +int ossl_quic_conn_set_override_now_cb(SSL *s, + OSSL_TIME (*now_cb)(void *arg), + void *now_cb_arg); + +/* + * Condvar waiting in the assist thread doesn't support time faking as it relies + * on the OS's notion of time, thus this is used in test code to force a + * spurious wakeup instead. + */ +void ossl_quic_conn_force_assist_thread_wake(SSL *s); + +/* For use by tests only. */ +QUIC_CHANNEL *ossl_quic_conn_get_channel(SSL *s); + +int ossl_quic_has_pending(const SSL *s); +int ossl_quic_get_shutdown(const SSL *s); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_statm.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_statm.h new file mode 100644 index 00000000..5b33551b --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_statm.h @@ -0,0 +1,40 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_STATS_H +# define OSSL_QUIC_STATS_H + +# include +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +typedef struct ossl_statm_st { + OSSL_TIME smoothed_rtt, latest_rtt, min_rtt, rtt_variance; + char have_first_sample; +} OSSL_STATM; + +typedef struct ossl_rtt_info_st { + /* As defined in RFC 9002. */ + OSSL_TIME smoothed_rtt, latest_rtt, rtt_variance, min_rtt; +} OSSL_RTT_INFO; + +int ossl_statm_init(OSSL_STATM *statm); + +void ossl_statm_destroy(OSSL_STATM *statm); + +void ossl_statm_get_rtt_info(OSSL_STATM *statm, OSSL_RTT_INFO *rtt_info); + +void ossl_statm_update_rtt(OSSL_STATM *statm, + OSSL_TIME ack_delay, + OSSL_TIME override_latest_rtt); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream.h new file mode 100644 index 00000000..0da8febd --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream.h @@ -0,0 +1,429 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_STREAM_H +# define OSSL_INTERNAL_QUIC_STREAM_H +# pragma once + +#include "internal/e_os.h" +#include "internal/time.h" +#include "internal/quic_types.h" +#include "internal/quic_wire.h" +#include "internal/quic_record_tx.h" +#include "internal/quic_record_rx.h" +#include "internal/quic_fc.h" +#include "internal/quic_statm.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Send Stream + * ================ + * + * The QUIC Send Stream Manager (QUIC_SSTREAM) is responsible for: + * + * - accepting octet strings of stream data; + * + * - generating corresponding STREAM frames; + * + * - receiving notifications of lost frames, in order to generate new STREAM + * frames for the lost data; + * + * - receiving notifications of acknowledged frames, in order to internally + * reuse memory used to store acknowledged stream data; + * + * - informing the caller of how much more stream data it can accept into + * its internal buffers, so as to ensure that the amount of unacknowledged + * data which can be written to a stream is not infinite and to allow the + * caller to manifest backpressure conditions to the user. + * + * The QUIC_SSTREAM is instantiated once for every stream with a send component + * (i.e., for a unidirectional send stream or for the send component of a + * bidirectional stream). + * + * Note: The terms 'TX' and 'RX' are used when referring to frames, packets and + * datagrams. The terms 'send' and 'receive' are used when referring to the + * stream abstraction. Applications send; we transmit. + */ +typedef struct quic_sstream_st QUIC_SSTREAM; + +/* + * Instantiates a new QUIC_SSTREAM. init_buf_size specifies the initial size of + * the stream data buffer in bytes, which must be positive. + */ +QUIC_SSTREAM *ossl_quic_sstream_new(size_t init_buf_size); + +/* + * Frees a QUIC_SSTREAM and associated stream data storage. + * + * Any iovecs returned by ossl_quic_sstream_get_stream_frame cease to be valid after + * calling this function. + */ +void ossl_quic_sstream_free(QUIC_SSTREAM *qss); + +/* + * (For TX packetizer use.) Retrieves information about application stream data + * which is ready for transmission. + * + * *hdr is filled with the logical offset, maximum possible length of stream + * data which can be transmitted, and a pointer to the stream data to be + * transmitted. is_fin is set to 1 if hdr->offset + hdr->len is the final size + * of the stream and 0 otherwise. hdr->stream_id is not set; the caller must set + * it. + * + * The caller is not obligated to send all of the data. If the caller does not + * send all of the data, the caller must reduce hdr->len before serializing the + * header structure and must ensure that hdr->is_fin is cleared. + * + * hdr->has_explicit_len is always set. It is the caller's responsibility to + * clear this if it wants to use the optimization of omitting the length field, + * as only the caller can know when this optimization can be performed. + * + * *num_iov must be set to the size of the iov array at call time. When this + * function returns successfully, it is updated to the number of iov entries + * which have been written. + * + * The stream data may be split across up to two IOVs due to internal ring + * buffer organisation. The sum of the lengths of the IOVs and the value written + * to hdr->len will always match. If the caller decides to send less than + * hdr->len of stream data, it must adjust the IOVs accordingly. This may be + * done by updating hdr->len and then calling the utility function + * ossl_quic_sstream_adjust_iov(). + * + * After committing one or more bytes returned by ossl_quic_sstream_get_stream_frame to a + * packet, call ossl_quic_sstream_mark_transmitted with the inclusive range of logical + * byte numbers of the transmitted bytes (i.e., hdr->offset, hdr->offset + + * hdr->len - 1). If you do not call ossl_quic_sstream_mark_transmitted, the next call to + * ossl_quic_sstream_get_stream_frame will return the same data (or potentially the same + * and more, if more data has been appended by the application). + * + * It is the caller's responsibility to clamp the length of data which this + * function indicates is available according to other concerns, such as + * stream-level flow control, connection-level flow control, or the applicable + * maximum datagram payload length (MDPL) for a packet under construction. + * + * The skip argument can usually be given as zero. If it is non-zero, this + * function outputs a range which would be output if it were called again after + * calling ossl_quic_sstream_mark_transmitted() with the returned range, repeated 'skip' + * times, and so on. This may be useful for callers which wish to enumerate + * available stream frames and batch their calls to ossl_quic_sstream_mark_transmitted at + * a later time. + * + * On success, this function will never write *num_iov with a value other than + * 0, 1 or 2. A *num_iov value of 0 can only occurs when hdr->is_fin is set (for + * example, when a stream is closed after all existing data has been sent, and + * without sending any more data); otherwise the function returns 0 as there is + * nothing useful to report. + * + * Returns 1 on success and 0 if there is no stream data available for + * transmission, or on other error (such as if the caller provides fewer + * than two IOVs.) + */ +int ossl_quic_sstream_get_stream_frame(QUIC_SSTREAM *qss, + size_t skip, + OSSL_QUIC_FRAME_STREAM *hdr, + OSSL_QTX_IOVEC *iov, + size_t *num_iov); + +/* + * Returns 1 if there is data pending transmission. Equivalent to calling + * ossl_quic_sstream_get_stream_frame and seeing if it succeeds. + */ +int ossl_quic_sstream_has_pending(QUIC_SSTREAM *qss); + +/* + * Returns the current size of the stream; i.e., the number of bytes which have + * been appended to the stream so far. + */ +uint64_t ossl_quic_sstream_get_cur_size(QUIC_SSTREAM *qss); + +/* + * (For TX packetizer use.) Marks a logical range of the send stream as having + * been transmitted. + * + * 0 denotes the first byte ever sent on the stream. The start and end values + * are both inclusive, therefore all calls to this function always mark at least + * one byte as being transmitted; if no bytes have been transmitted, do not call + * this function. + * + * If the STREAM frame sent had the FIN bit set, you must also call + * ossl_quic_sstream_mark_transmitted_fin() after calling this function. + * + * If you sent a zero-length STREAM frame with the FIN bit set, you need only + * call ossl_quic_sstream_mark_transmitted_fin() and must not call this function. + * + * Returns 1 on success and 0 on error (e.g. if end < start). + */ +int ossl_quic_sstream_mark_transmitted(QUIC_SSTREAM *qss, + uint64_t start, + uint64_t end); + +/* + * (For TX packetizer use.) Marks a STREAM frame with the FIN bit set as having + * been transmitted. final_size is the final size of the stream (i.e., the value + * offset + len of the transmitted STREAM frame). + * + * This function fails returning 0 if ossl_quic_sstream_fin() has not been called or if + * final_size is not correct. The final_size argument is not strictly needed by + * the QUIC_SSTREAM but is required as a sanity check. + */ +int ossl_quic_sstream_mark_transmitted_fin(QUIC_SSTREAM *qss, + uint64_t final_size); + +/* + * (RX/ACKM use.) Marks a logical range of the send stream as having been lost. + * The send stream will return the lost data for retransmission on a future call + * to ossl_quic_sstream_get_stream_frame. The start and end values denote logical byte + * numbers and are inclusive. + * + * If the lost frame had the FIN bit set, you must also call + * ossl_quic_sstream_mark_lost_fin() after calling this function. + * + * Returns 1 on success and 0 on error (e.g. if end < start). + */ +int ossl_quic_sstream_mark_lost(QUIC_SSTREAM *qss, + uint64_t start, + uint64_t end); + +/* + * (RX/ACKM use.) Informs the QUIC_SSTREAM that a STREAM frame with the FIN bit + * set was lost. + * + * Returns 1 on success and 0 on error. + */ +int ossl_quic_sstream_mark_lost_fin(QUIC_SSTREAM *qss); + +/* + * (RX/ACKM use.) Marks a logical range of the send stream as having been + * acknowledged, meaning that the storage for the data in that range of the + * stream can be now recycled and neither that logical range of the stream nor + * any subset of it can be retransmitted again. The start and end values are + * inclusive. + * + * If the acknowledged frame had the FIN bit set, you must also call + * ossl_quic_sstream_mark_acked_fin() after calling this function. + * + * Returns 1 on success and 0 on error (e.g. if end < start). + */ +int ossl_quic_sstream_mark_acked(QUIC_SSTREAM *qss, + uint64_t start, + uint64_t end); + +/* + * (RX/ACKM use.) Informs the QUIC_SSTREAM that a STREAM frame with the FIN bit + * set was acknowledged. + * + * Returns 1 on success and 0 on error. + */ +int ossl_quic_sstream_mark_acked_fin(QUIC_SSTREAM *qss); + +/* + * (Front end use.) Appends user data to the stream. The data is copied into the + * stream. The amount of data consumed from buf is written to *consumed on + * success (short writes are possible). The amount of data which can be written + * can be determined in advance by calling the ossl_quic_sstream_get_buffer_avail() + * function; data is copied into an internal ring buffer of finite size. + * + * If the buffer is full, this should be materialised as a backpressure + * condition by the front end. This is not considered a failure condition; + * *consumed is written as 0 and the function returns 1. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_sstream_append(QUIC_SSTREAM *qss, + const unsigned char *buf, + size_t buf_len, + size_t *consumed); + +/* + * Marks a stream as finished. ossl_quic_sstream_append() may not be called anymore + * after calling this. + */ +void ossl_quic_sstream_fin(QUIC_SSTREAM *qss); + +/* + * If the stream has had ossl_quic_sstream_fin() called, returns 1 and writes + * the final size to *final_size. Otherwise, returns 0. + */ +int ossl_quic_sstream_get_final_size(QUIC_SSTREAM *qss, uint64_t *final_size); + +/* + * Returns 1 iff all bytes (and any FIN, if any) which have been appended to the + * QUIC_SSTREAM so far, and any FIN (if any), have been both sent and acked. + */ +int ossl_quic_sstream_is_totally_acked(QUIC_SSTREAM *qss); + +/* + * Resizes the internal ring buffer. All stream data is preserved safely. + * + * This can be used to expand or contract the ring buffer, but not to contract + * the ring buffer below the amount of stream data currently stored in it. + * Returns 1 on success and 0 on failure. + * + * IMPORTANT: Any buffers referenced by iovecs output by + * ossl_quic_sstream_get_stream_frame() cease to be valid after calling this function. + */ +int ossl_quic_sstream_set_buffer_size(QUIC_SSTREAM *qss, size_t num_bytes); + +/* + * Gets the internal ring buffer size in bytes. + */ +size_t ossl_quic_sstream_get_buffer_size(QUIC_SSTREAM *qss); + +/* + * Gets the number of bytes used in the internal ring buffer. + */ +size_t ossl_quic_sstream_get_buffer_used(QUIC_SSTREAM *qss); + +/* + * Gets the number of bytes free in the internal ring buffer. + */ +size_t ossl_quic_sstream_get_buffer_avail(QUIC_SSTREAM *qss); + +/* + * Utility function to ensure the length of an array of iovecs matches the + * length given as len. Trailing iovecs have their length values reduced or set + * to 0 as necessary. + */ +void ossl_quic_sstream_adjust_iov(size_t len, + OSSL_QTX_IOVEC *iov, + size_t num_iov); + +/* + * Sets flag to cleanse the buffered data when it is acked. + */ +void ossl_quic_sstream_set_cleanse(QUIC_SSTREAM *qss, int cleanse); + +/* + * QUIC Receive Stream Manager + * =========================== + * + * The QUIC Receive Stream Manager (QUIC_RSTREAM) is responsible for + * storing the received stream data frames until the application + * is able to read the data. + * + * The QUIC_RSTREAM is instantiated once for every stream that can receive data. + * (i.e., for a unidirectional receiving stream or for the receiving component + * of a bidirectional stream). + */ +typedef struct quic_rstream_st QUIC_RSTREAM; + +/* + * Create a new instance of QUIC_RSTREAM with pointers to the flow + * controller and statistics module. They can be NULL for unit testing. + * If they are non-NULL, the `rxfc` is called when receive stream data + * is read by application. `statm` is queried for current rtt. + * `rbuf_size` is the initial size of the ring buffer to be used + * when ossl_quic_rstream_move_to_rbuf() is called. + */ +QUIC_RSTREAM *ossl_quic_rstream_new(QUIC_RXFC *rxfc, + OSSL_STATM *statm, size_t rbuf_size); + +/* + * Frees a QUIC_RSTREAM and any associated storage. + */ +void ossl_quic_rstream_free(QUIC_RSTREAM *qrs); + +/* + * Adds received stream frame data to `qrs`. The `pkt_wrap` refcount is + * incremented if the `data` is queued directly without copying. + * It can be NULL for unit-testing purposes, i.e. if `data` is static or + * never released before calling ossl_quic_rstream_free(). + * The `offset` is the absolute offset of the data in the stream. + * `data_len` can be 0 - can be useful for indicating `fin` for empty stream. + * Or to indicate `fin` without any further data added to the stream. + */ + +int ossl_quic_rstream_queue_data(QUIC_RSTREAM *qrs, OSSL_QRX_PKT *pkt, + uint64_t offset, + const unsigned char *data, uint64_t data_len, + int fin); + +/* + * Copies the data from the stream storage to buffer `buf` of size `size`. + * `readbytes` is set to the number of bytes actually copied. + * `fin` is set to 1 if all the data from the stream were read so the + * stream is finished. It is set to 0 otherwise. + */ +int ossl_quic_rstream_read(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, + size_t *readbytes, int *fin); + +/* + * Peeks at the data in the stream storage. It copies them to buffer `buf` + * of size `size` and sets `readbytes` to the number of bytes actually copied. + * `fin` is set to 1 if the copied data reach end of the stream. + * It is set to 0 otherwise. + */ +int ossl_quic_rstream_peek(QUIC_RSTREAM *qrs, unsigned char *buf, size_t size, + size_t *readbytes, int *fin); + +/* + * Returns the size of the data available for reading. `fin` is set to 1 if + * after reading all the available data the stream will be finished, + * set to 0 otherwise. + */ +int ossl_quic_rstream_available(QUIC_RSTREAM *qrs, size_t *avail, int *fin); + +/* + * Sets *record to the beginning of the first readable stream data chunk and + * *reclen to the size of the chunk. *fin is set to 1 if the end of the + * chunk is the last of the stream data chunks. + * If there is no record available *record is set to NULL and *rec_len to 0; + * ossl_quic_rstream_release_record() should not be called in that case. + * Returns 1 on success (including calls if no record is available, or + * after end of the stream - in that case *fin will be set to 1 and + * *rec_len to 0), 0 on error. + * It is an error to call ossl_quic_rstream_get_record() multiple times + * without calling ossl_quic_rstream_release_record() in between. + */ +int ossl_quic_rstream_get_record(QUIC_RSTREAM *qrs, + const unsigned char **record, size_t *rec_len, + int *fin); + +/* + * Releases (possibly partially) the record returned by + * previous ossl_quic_rstream_get_record() call. + * read_len between previously returned *rec_len and SIZE_MAX indicates + * release of the whole record. Otherwise only part of the record is + * released. The remaining part of the record is unlocked, another + * call to ossl_quic_rstream_get_record() is needed to obtain further + * stream data. + * Returns 1 on success, 0 on error. + * It is an error to call ossl_quic_rstream_release_record() multiple + * times without calling ossl_quic_rstream_get_record() in between. + */ +int ossl_quic_rstream_release_record(QUIC_RSTREAM *qrs, size_t read_len); + +/* + * Moves received frame data from decrypted packets to ring buffer. + * This should be called when there are too many decrypted packets allocated. + * Returns 1 on success, 0 when it was not possible to release all + * referenced packets due to an insufficient size of the ring buffer. + * Exception is the packet from the record returned previously by + * ossl_quic_rstream_get_record() - that one will be always skipped. + */ +int ossl_quic_rstream_move_to_rbuf(QUIC_RSTREAM *qrs); + +/* + * Resizes the internal ring buffer to a new `rbuf_size` size. + * Returns 1 on success, 0 on error. + * Possible error conditions are an allocation failure, trying to resize + * the ring buffer when ossl_quic_rstream_get_record() was called and + * not yet released, or trying to resize the ring buffer to a smaller size + * than currently occupied. + */ +int ossl_quic_rstream_resize_rbuf(QUIC_RSTREAM *qrs, size_t rbuf_size); + +/* + * Sets flag to cleanse the buffered data when user reads it. + */ +void ossl_quic_rstream_set_cleanse(QUIC_RSTREAM *qrs, int cleanse); +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream_map.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream_map.h new file mode 100644 index 00000000..ae749061 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_stream_map.h @@ -0,0 +1,878 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_STREAM_MAP_H +# define OSSL_INTERNAL_QUIC_STREAM_MAP_H +# pragma once + +# include "internal/e_os.h" +# include "internal/time.h" +# include "internal/common.h" +# include "internal/quic_types.h" +# include "internal/quic_stream.h" +# include "internal/quic_fc.h" +# include + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Stream + * =========== + * + * Logical QUIC stream composing all relevant send and receive components. + */ +typedef struct quic_stream_st QUIC_STREAM; + +typedef struct quic_stream_list_node_st QUIC_STREAM_LIST_NODE; + +struct quic_stream_list_node_st { + QUIC_STREAM_LIST_NODE *prev, *next; +}; + +/* + * QUIC Send Stream States + * ----------------------- + * + * These correspond to the states defined in RFC 9000 s. 3.1, with the + * exception of the NONE state which represents the absence of a send stream + * part. + * + * Invariants in each state are noted in comments below. In particular, once all + * data has been acknowledged received, or we have reset the stream, we don't + * need to keep the QUIC_SSTREAM and data buffers around. Of course, we also + * don't have a QUIC_SSTREAM on a receive-only stream. + */ +#define QUIC_SSTREAM_STATE_NONE 0 /* --- sstream == NULL */ +#define QUIC_SSTREAM_STATE_READY 1 /* \ */ +#define QUIC_SSTREAM_STATE_SEND 2 /* |-- sstream != NULL */ +#define QUIC_SSTREAM_STATE_DATA_SENT 3 /* / */ +#define QUIC_SSTREAM_STATE_DATA_RECVD 4 /* \ */ +#define QUIC_SSTREAM_STATE_RESET_SENT 5 /* |-- sstream == NULL */ +#define QUIC_SSTREAM_STATE_RESET_RECVD 6 /* / */ + +/* + * QUIC Receive Stream States + * -------------------------- + * + * These correspond to the states defined in RFC 9000 s. 3.2, with the exception + * of the NONE state which represents the absence of a receive stream part. + * + * Invariants in each state are noted in comments below. In particular, once all + * data has been read by the application, we don't need to keep the QUIC_RSTREAM + * and data buffers around. If the receive part is instead reset before it is + * finished, we also don't need to keep the QUIC_RSTREAM around. Finally, we + * don't need a QUIC_RSTREAM on a send-only stream. + */ +#define QUIC_RSTREAM_STATE_NONE 0 /* --- rstream == NULL */ +#define QUIC_RSTREAM_STATE_RECV 1 /* \ */ +#define QUIC_RSTREAM_STATE_SIZE_KNOWN 2 /* |-- rstream != NULL */ +#define QUIC_RSTREAM_STATE_DATA_RECVD 3 /* / */ +#define QUIC_RSTREAM_STATE_DATA_READ 4 /* \ */ +#define QUIC_RSTREAM_STATE_RESET_RECVD 5 /* |-- rstream == NULL */ +#define QUIC_RSTREAM_STATE_RESET_READ 6 /* / */ + +struct quic_stream_st { + QUIC_STREAM_LIST_NODE active_node; /* for use by QUIC_STREAM_MAP */ + QUIC_STREAM_LIST_NODE accept_node; /* accept queue of remotely-created streams */ + QUIC_STREAM_LIST_NODE ready_for_gc_node; /* queue of streams now ready for GC */ + + /* Temporary link used by TXP. */ + QUIC_STREAM *txp_next; + + /* + * QUIC Stream ID. Do not assume that this encodes a type as this is a + * version-specific property and may change between QUIC versions; instead, + * use the type field. + */ + uint64_t id; + + /* + * Application Error Code (AEC) used for STOP_SENDING frame. + * This is only valid if stop_sending is 1. + */ + uint64_t stop_sending_aec; + + /* + * Application Error Code (AEC) used for RESET_STREAM frame. + * This is only valid if reset_stream is 1. + */ + uint64_t reset_stream_aec; + + /* + * Application Error Code (AEC) for incoming STOP_SENDING frame. + * This is only valid if peer_stop_sending is 1. + */ + uint64_t peer_stop_sending_aec; + + /* + * Application Error Code (AEC) for incoming RESET_STREAM frame. + * This is only valid if peer_reset_stream is 1. + */ + uint64_t peer_reset_stream_aec; + + /* Temporary value used by TXP. */ + uint64_t txp_txfc_new_credit_consumed; + + /* + * The final size of the send stream. Although this information can be + * discerned from a QUIC_SSTREAM, it is stored separately as we need to keep + * track of this even if we have thrown away the QUIC_SSTREAM. Use + * ossl_quic_stream_send_get_final_size to determine if this contain a + * valid value or if there is no final size yet for a sending part. + * + * For the receive part, the final size is tracked by the stream-level RXFC; + * use ossl_quic_stream_recv_get_final_size or + * ossl_quic_rxfc_get_final_size. + */ + uint64_t send_final_size; + + /* + * Send stream part and receive stream part buffer management objects. + * + * DO NOT test these pointers (sstream, rstream) for NULL. Determine the + * state of the send or receive stream part first using the appropriate + * function; then the invariant of that state guarantees that sstream or + * rstream either is or is not NULL respectively, therefore there is no + * valid use case for testing these pointers for NULL. In particular, a + * stream with a send part can still have sstream as NULL, and a stream with + * a receive part can still have rstream as NULL. QUIC_SSTREAM and + * QUIC_RSTREAM are stream buffer resource management objects which exist + * only when they need to for buffer management purposes. The existence or + * non-existence of a QUIC_SSTREAM or QUIC_RSTREAM object does not + * correspond with whether a stream's respective send or receive part + * logically exists or not. + */ + QUIC_SSTREAM *sstream; /* NULL if RX-only */ + QUIC_RSTREAM *rstream; /* NULL if TX only */ + + /* Stream-level flow control managers. */ + QUIC_TXFC txfc; /* NULL if RX-only */ + QUIC_RXFC rxfc; /* NULL if TX-only */ + + unsigned int type : 8; /* QUIC_STREAM_INITIATOR_*, QUIC_STREAM_DIR_* */ + + unsigned int send_state : 8; /* QUIC_SSTREAM_STATE_* */ + unsigned int recv_state : 8; /* QUIC_RSTREAM_STATE_* */ + + /* 1 iff this QUIC_STREAM is on the active queue (invariant). */ + unsigned int active : 1; + + /* + * This is a copy of the QUIC connection as_server value, indicating + * whether we are locally operating as a server or not. Having this + * significantly simplifies stream type determination relative to our + * perspective. It never changes after a QUIC_STREAM is created and is the + * same for all QUIC_STREAMS under a QUIC_STREAM_MAP. + */ + unsigned int as_server : 1; + + /* + * Has STOP_SENDING been requested (by us)? Note that this is not the same + * as want_stop_sending below, as a STOP_SENDING frame may already have been + * sent and fully acknowledged. + */ + unsigned int stop_sending : 1; + + /* + * Has RESET_STREAM been requested (by us)? Works identically to + * STOP_SENDING for transmission purposes. + */ + /* Has our peer sent a STOP_SENDING frame? */ + unsigned int peer_stop_sending : 1; + + /* Temporary flags used by TXP. */ + unsigned int txp_sent_fc : 1; + unsigned int txp_sent_stop_sending : 1; + unsigned int txp_sent_reset_stream : 1; + unsigned int txp_drained : 1; + unsigned int txp_blocked : 1; + + /* Frame regeneration flags. */ + unsigned int want_max_stream_data : 1; /* used for regen only */ + unsigned int want_stop_sending : 1; /* used for gen or regen */ + unsigned int want_reset_stream : 1; /* used for gen or regen */ + + /* Flags set when frames *we* sent were acknowledged. */ + unsigned int acked_stop_sending : 1; + + /* + * The stream's XSO has been deleted. Pending GC. + * + * Here is how stream deletion works: + * + * - A QUIC_STREAM cannot be deleted until it is neither in the accept + * queue nor has an associated XSO. This condition occurs when and only + * when deleted is true. + * + * - Once this is the case (i.e., no user-facing API object exposing the + * stream), we can delete the stream once we determine that all of our + * protocol obligations requiring us to keep the QUIC_STREAM around have + * been met. + * + * The following frames relate to the streams layer for a specific + * stream: + * + * STREAM + * + * RX Obligations: + * Ignore for a deleted stream. + * + * (This is different from our obligation for a + * locally-initiated stream ID we have not created yet, + * which we must treat as a protocol error. This can be + * distinguished via a simple monotonic counter.) + * + * TX Obligations: + * None, once we've decided to (someday) delete the stream. + * + * STOP_SENDING + * + * We cannot delete the stream until we have finished informing + * the peer that we are not going to be listening to it + * anymore. + * + * RX Obligations: + * When we delete a stream we must have already had a FIN + * or RESET_STREAM we transmitted acknowledged by the peer. + * Thus we can ignore STOP_SENDING frames for deleted + * streams (if they occur, they are probably just + * retransmissions). + * + * TX Obligations: + * _Acknowledged_ receipt of a STOP_SENDING frame by the + * peer (unless the peer's send part has already FIN'd). + * + * RESET_STREAM + * + * We cannot delete the stream until we have finished informing + * the peer that we are not going to be transmitting on it + * anymore. + * + * RX Obligations: + * This indicates the peer is not going to send any more + * data on the stream. We don't need to care about this + * since once a stream is marked for deletion we don't care + * about any data it does send. We can ignore this for + * deleted streams. The important criterion is that the + * peer has been successfully delivered our STOP_SENDING + * frame. + * + * TX Obligations: + * _Acknowledged_ receipt of a RESET_STREAM frame or FIN by + * the peer. + * + * MAX_STREAM_DATA + * + * RX Obligations: + * Ignore. Since we are not going to be sending any more + * data on a stream once it has been marked for deletion, + * we don't need to care about flow control information. + * + * TX Obligations: + * None. + * + * In other words, our protocol obligation is simply: + * + * - either: + * - the peer has acknowledged receipt of a STOP_SENDING frame sent + * by us; -or- + * - we have received a FIN and all preceding segments from the peer + * + * [NOTE: The actual criterion required here is simply 'we have + * received a FIN from the peer'. However, due to reordering and + * retransmissions we might subsequently receive non-FIN segments + * out of order. The FIN means we know the peer will stop + * transmitting on the stream at *some* point, but by sending + * STOP_SENDING we can avoid these needless retransmissions we + * will just ignore anyway. In actuality we could just handle all + * cases by sending a STOP_SENDING. The strategy we choose is to + * only avoid sending a STOP_SENDING and rely on a received FIN + * when we have received all preceding data, as this makes it + * reasonably certain no benefit would be gained by sending + * STOP_SENDING.] + * + * TODO(QUIC FUTURE): Implement the latter case (currently we + just always do STOP_SENDING). + * + * and; + * + * - we have drained our send stream (for a finished send stream) + * and got acknowledgement all parts of it including the FIN, or + * sent a RESET_STREAM frame and got acknowledgement of that frame. + * + * Once these conditions are met, we can GC the QUIC_STREAM. + * + */ + unsigned int deleted : 1; + /* Set to 1 once the above conditions are actually met. */ + unsigned int ready_for_gc : 1; + /* Set to 1 if this is currently counted in the shutdown flush stream count. */ + unsigned int shutdown_flush : 1; +}; + +#define QUIC_STREAM_INITIATOR_CLIENT 0 +#define QUIC_STREAM_INITIATOR_SERVER 1 +#define QUIC_STREAM_INITIATOR_MASK 1 + +#define QUIC_STREAM_DIR_BIDI 0 +#define QUIC_STREAM_DIR_UNI 2 +#define QUIC_STREAM_DIR_MASK 2 + +void ossl_quic_stream_check(const QUIC_STREAM *s); + +/* + * Returns 1 if the QUIC_STREAM was initiated by the endpoint with the server + * role. + */ +static ossl_inline ossl_unused int ossl_quic_stream_is_server_init(const QUIC_STREAM *s) +{ + return (s->type & QUIC_STREAM_INITIATOR_MASK) == QUIC_STREAM_INITIATOR_SERVER; +} + +/* + * Returns 1 if the QUIC_STREAM is bidirectional and 0 if it is unidirectional. + */ +static ossl_inline ossl_unused int ossl_quic_stream_is_bidi(const QUIC_STREAM *s) +{ + return (s->type & QUIC_STREAM_DIR_MASK) == QUIC_STREAM_DIR_BIDI; +} + +/* Returns 1 if the QUIC_STREAM was locally initiated. */ +static ossl_inline ossl_unused int ossl_quic_stream_is_local_init(const QUIC_STREAM *s) +{ + return ossl_quic_stream_is_server_init(s) == s->as_server; +} + +/* + * Returns 1 if the QUIC_STREAM has a sending part, based on its stream type. + * + * Do NOT use (s->sstream != NULL) to test this; use this function. Note that + * even if this function returns 1, s->sstream might be NULL if the QUIC_SSTREAM + * has been deemed no longer needed, for example due to a RESET_STREAM. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_send(const QUIC_STREAM *s) +{ + return s->send_state != QUIC_SSTREAM_STATE_NONE; +} + +/* + * Returns 1 if the QUIC_STREAM has a receiving part, based on its stream type. + * + * Do NOT use (s->rstream != NULL) to test this; use this function. Note that + * even if this function returns 1, s->rstream might be NULL if the QUIC_RSTREAM + * has been deemed no longer needed, for example if the receive stream is + * completely finished with. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_recv(const QUIC_STREAM *s) +{ + return s->recv_state != QUIC_RSTREAM_STATE_NONE; +} + +/* + * Returns 1 if the QUIC_STREAM has a QUIC_SSTREAM send buffer associated with + * it. If this returns 1, s->sstream is guaranteed to be non-NULL. The converse + * is not necessarily true; erasure of a send stream buffer which is no longer + * required is an optimisation which the QSM may, but is not obliged, to + * perform. + * + * This call should be used where it is desired to do something with the send + * stream buffer but there is no more specific send state restriction which is + * applicable. + * + * Note: This does NOT indicate whether it is suitable to allow an application + * to append to the buffer. DATA_SENT indicates all data (including FIN) has + * been *sent*; the absence of DATA_SENT does not mean a FIN has not been queued + * (meaning no more application data can be appended). This is enforced by + * QUIC_SSTREAM. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_send_buffer(const QUIC_STREAM *s) +{ + switch (s->send_state) { + case QUIC_SSTREAM_STATE_READY: + case QUIC_SSTREAM_STATE_SEND: + case QUIC_SSTREAM_STATE_DATA_SENT: + return 1; + default: + return 0; + } +} + +/* + * Returns 1 if the QUIC_STREAM has a sending part which is in one of the reset + * states. + */ +static ossl_inline ossl_unused int ossl_quic_stream_send_is_reset(const QUIC_STREAM *s) +{ + return s->send_state == QUIC_SSTREAM_STATE_RESET_SENT + || s->send_state == QUIC_SSTREAM_STATE_RESET_RECVD; +} + +/* + * Returns 1 if the QUIC_STREAM has a QUIC_RSTREAM receive buffer associated + * with it. If this returns 1, s->rstream is guaranteed to be non-NULL. The + * converse is not necessarily true; erasure of a receive stream buffer which is + * no longer required is an optimisation which the QSM may, but is not obliged, + * to perform. + * + * This call should be used where it is desired to do something with the receive + * stream buffer but there is no more specific receive state restriction which is + * applicable. + */ +static ossl_inline ossl_unused int ossl_quic_stream_has_recv_buffer(const QUIC_STREAM *s) +{ + switch (s->recv_state) { + case QUIC_RSTREAM_STATE_RECV: + case QUIC_RSTREAM_STATE_SIZE_KNOWN: + case QUIC_RSTREAM_STATE_DATA_RECVD: + return 1; + default: + return 0; + } +} + +/* + * Returns 1 if the QUIC_STREAM has a receiving part which is in one of the + * reset states. + */ +static ossl_inline ossl_unused int ossl_quic_stream_recv_is_reset(const QUIC_STREAM *s) +{ + return s->recv_state == QUIC_RSTREAM_STATE_RESET_RECVD + || s->recv_state == QUIC_RSTREAM_STATE_RESET_READ; +} + +/* + * Returns 1 if the stream has a send part and that part has a final size. + * + * If final_size is non-NULL, *final_size is the final size (on success) or an + * undefined value otherwise. + */ +static ossl_inline ossl_unused int ossl_quic_stream_send_get_final_size(const QUIC_STREAM *s, + uint64_t *final_size) +{ + switch (s->send_state) { + default: + case QUIC_SSTREAM_STATE_NONE: + return 0; + case QUIC_SSTREAM_STATE_SEND: + /* + * SEND may or may not have had a FIN - even if we have a FIN we do not + * move to DATA_SENT until we have actually sent all the data. So + * ask the QUIC_SSTREAM. + */ + return ossl_quic_sstream_get_final_size(s->sstream, final_size); + case QUIC_SSTREAM_STATE_DATA_SENT: + case QUIC_SSTREAM_STATE_DATA_RECVD: + case QUIC_SSTREAM_STATE_RESET_SENT: + case QUIC_SSTREAM_STATE_RESET_RECVD: + if (final_size != NULL) + *final_size = s->send_final_size; + return 1; + } +} + +/* + * Returns 1 if the stream has a receive part and that part has a final size. + * + * If final_size is non-NULL, *final_size is the final size (on success) or an + * undefined value otherwise. + */ +static ossl_inline ossl_unused int ossl_quic_stream_recv_get_final_size(const QUIC_STREAM *s, + uint64_t *final_size) +{ + switch (s->recv_state) { + default: + case QUIC_RSTREAM_STATE_NONE: + case QUIC_RSTREAM_STATE_RECV: + return 0; + + case QUIC_RSTREAM_STATE_SIZE_KNOWN: + case QUIC_RSTREAM_STATE_DATA_RECVD: + case QUIC_RSTREAM_STATE_DATA_READ: + case QUIC_RSTREAM_STATE_RESET_RECVD: + case QUIC_RSTREAM_STATE_RESET_READ: + if (!ossl_assert(ossl_quic_rxfc_get_final_size(&s->rxfc, final_size))) + return 0; + + return 1; + } +} + +/* + * QUIC Stream Map + * =============== + * + * The QUIC stream map: + * + * - maps stream IDs to QUIC_STREAM objects; + * - tracks which streams are 'active' (currently have data for transmission); + * - allows iteration over the active streams only. + * + */ +typedef struct quic_stream_map_st { + LHASH_OF(QUIC_STREAM) *map; + QUIC_STREAM_LIST_NODE active_list; + QUIC_STREAM_LIST_NODE accept_list; + QUIC_STREAM_LIST_NODE ready_for_gc_list; + size_t rr_stepping, rr_counter; + size_t num_accept, num_shutdown_flush; + QUIC_STREAM *rr_cur; + uint64_t (*get_stream_limit_cb)(int uni, void *arg); + void *get_stream_limit_cb_arg; + QUIC_RXFC *max_streams_bidi_rxfc; + QUIC_RXFC *max_streams_uni_rxfc; + int is_server; +} QUIC_STREAM_MAP; + +/* + * get_stream_limit is a callback which is called to retrieve the current stream + * limit for streams created by us. This mechanism is not used for + * peer-initiated streams. If a stream's stream ID is x, a stream is allowed if + * (x >> 2) < returned limit value; i.e., the returned value is exclusive. + * + * If uni is 1, get the limit for locally-initiated unidirectional streams, else + * get the limit for locally-initiated bidirectional streams. + * + * If the callback is NULL, stream limiting is not applied. + * Stream limiting is used to determine if frames can currently be produced for + * a stream. + */ +int ossl_quic_stream_map_init(QUIC_STREAM_MAP *qsm, + uint64_t (*get_stream_limit_cb)(int uni, void *arg), + void *get_stream_limit_cb_arg, + QUIC_RXFC *max_streams_bidi_rxfc, + QUIC_RXFC *max_streams_uni_rxfc, + int is_server); + +/* + * Any streams still in the map will be released as though + * ossl_quic_stream_map_release was called on them. + */ +void ossl_quic_stream_map_cleanup(QUIC_STREAM_MAP *qsm); + +/* + * Allocate a new stream. type is a combination of one QUIC_STREAM_INITIATOR_* + * value and one QUIC_STREAM_DIR_* value. Note that clients can e.g. allocate + * server-initiated streams as they will need to allocate a QUIC_STREAM + * structure to track any stream created by the server, etc. + * + * stream_id must be a valid value. Returns NULL if a stream already exists + * with the given ID. + */ +QUIC_STREAM *ossl_quic_stream_map_alloc(QUIC_STREAM_MAP *qsm, + uint64_t stream_id, + int type); + +/* + * Releases a stream object. Note that this must only be done once the teardown + * process is entirely complete and the object will never be referenced again. + */ +void ossl_quic_stream_map_release(QUIC_STREAM_MAP *qsm, QUIC_STREAM *stream); + +/* + * Calls visit_cb() for each stream in the map. visit_cb_arg is an opaque + * argument which is passed through. + */ +void ossl_quic_stream_map_visit(QUIC_STREAM_MAP *qsm, + void (*visit_cb)(QUIC_STREAM *stream, void *arg), + void *visit_cb_arg); + +/* + * Retrieves a stream by stream ID. Returns NULL if it does not exist. + */ +QUIC_STREAM *ossl_quic_stream_map_get_by_id(QUIC_STREAM_MAP *qsm, + uint64_t stream_id); + +/* + * Marks the given stream as active or inactive based on its state. Idempotent. + * + * When a stream is marked active, it becomes available in the iteration list, + * and when a stream is marked inactive, it no longer appears in the iteration + * list. + * + * Calling this function invalidates any iterator currently pointing at the + * given stream object, but iterators not currently pointing at the given stream + * object are not invalidated. + */ +void ossl_quic_stream_map_update_state(QUIC_STREAM_MAP *qsm, QUIC_STREAM *s); + +/* + * Sets the RR stepping value, n. The RR rotation will be advanced every n + * packets. The default value is 1. + */ +void ossl_quic_stream_map_set_rr_stepping(QUIC_STREAM_MAP *qsm, size_t stepping); + +/* + * Returns 1 if the stream ordinal given is allowed by the current stream count + * flow control limit, assuming a locally initiated stream of a type described + * by is_uni. + * + * Note that stream_ordinal is a stream ordinal, not a stream ID. + */ +int ossl_quic_stream_map_is_local_allowed_by_stream_limit(QUIC_STREAM_MAP *qsm, + uint64_t stream_ordinal, + int is_uni); + +/* + * Stream Send Part + * ================ + */ + +/* + * Ensures that the sending part has transitioned out of the READY state (i.e., + * to SEND, or a subsequent state). This function is named as it is because, + * while on paper the distinction between READY and SEND is whether we have + * started transmitting application data, in practice the meaningful distinction + * between the two states is whether we have allocated a stream ID to the stream + * or not. QUIC permits us to defer stream ID allocation until first STREAM (or + * STREAM_DATA_BLOCKED) frame transmission for locally-initiated streams. + * + * Our implementation does not currently do this and we allocate stream IDs up + * front, however we may revisit this in the future. Calling this represents a + * demand for a stream ID by the caller and ensures one has been allocated to + * the stream, and causes us to transition to SEND if we are still in the READY + * state. + * + * Returns 0 if there is no send part (caller error) and 1 otherwise. + */ +int ossl_quic_stream_map_ensure_send_part_id(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from SEND to the DATA_SENT state. Note that this is NOT the same + * as the point in time at which the final size of the stream becomes known + * (i.e., the time at which ossl_quic_sstream_fin()) is called as it occurs when + * we have SENT all data on a given stream send part, not merely buffered it. + * Note that this transition is NOT reversed in the event of some of that data + * being lost. + * + * Returns 1 if the state transition was successfully taken. Returns 0 if there + * is no send part (caller error) or if the state transition cannot be taken + * because the send part is not in the SEND state. + */ +int ossl_quic_stream_map_notify_all_data_sent(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from the DATA_SENT to DATA_RECVD state; should be called + * when all transmitted stream data is ACKed by the peer. + * + * Returns 1 if the state transition was successfully taken. Returns 0 if there + * is no send part (caller error) or the state transition cannot be taken + * because the send part is not in the DATA_SENT state. Because + * ossl_quic_stream_map_notify_all_data_sent() should always be called prior to + * this function, the send state must already be in DATA_SENT in order for this + * function to succeed. + */ +int ossl_quic_stream_map_notify_totally_acked(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Resets the sending part of a stream. This is a transition from the READY, + * SEND or DATA_SENT send stream states to the RESET_SENT state. + * + * This function returns 1 if the transition is taken (i.e., if the send stream + * part was in one of the states above), or if it is already in the RESET_SENT + * state (idempotent operation), or if it has reached the RESET_RECVD state. + * + * It returns 0 if in the DATA_RECVD state, as a send stream cannot be reset + * in this state. It also returns 0 if there is no send part (caller error). + */ +int ossl_quic_stream_map_reset_stream_send_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t aec); + +/* + * Transitions from the RESET_SENT to the RESET_RECVD state. This should be + * called when a sent RESET_STREAM frame has been acknowledged by the peer. + * + * This function returns 1 if the transition is taken (i.e., if the send stream + * part was in one of the states above) or if it is already in the RESET_RECVD + * state (idempotent operation). + * + * It returns 0 if not in the RESET_SENT or RESET_RECVD states, as this function + * should only be called after we have already sent a RESET_STREAM frame and + * entered the RESET_SENT state. It also returns 0 if there is no send part + * (caller error). + */ +int ossl_quic_stream_map_notify_reset_stream_acked(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + + +/* + * Stream Receive Part + * =================== + */ + +/* + * Transitions from the RECV receive stream state to the SIZE_KNOWN state. This + * should be called once a STREAM frame is received for the stream with the FIN + * bit set. final_size should be the final size of the stream in bytes. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_size_known_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t final_size); + +/* + * Transitions from the SIZE_KNOWN receive stream state to the DATA_RECVD state. + * This should be called once all data for a receive stream is received. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_totally_received(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from the DATA_RECVD receive stream state to the DATA_READ state. + * This should be called once all data for a receive stream is read by the + * application. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_totally_read(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Transitions from the RECV, SIZE_KNOWN or DATA_RECVD receive stream state to + * the RESET_RECVD state. This should be called on RESET_STREAM. + * + * Returns 1 if the transition was taken. + */ +int ossl_quic_stream_map_notify_reset_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t app_error_code, + uint64_t final_size); + +/* + * Transitions from the RESET_RECVD receive stream state to the RESET_READ + * receive stream state. This should be called when the application is notified + * of a stream reset. + */ +int ossl_quic_stream_map_notify_app_read_reset_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + +/* + * Marks the receiving part of a stream for STOP_SENDING. This is orthogonal to + * receive stream state as it does not affect it directly. + * + * Returns 1 if the receiving part of a stream was not already marked for + * STOP_SENDING. + * Returns 0 otherwise, which need not be considered an error. + */ +int ossl_quic_stream_map_stop_sending_recv_part(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs, + uint64_t aec); + +/* + * Marks the stream as wanting a STOP_SENDING frame transmitted. It is not valid + * to call this if ossl_quic_stream_map_stop_sending_recv_part() has not been + * called. For TXP use. + */ +int ossl_quic_stream_map_schedule_stop_sending(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *qs); + + +/* + * Accept Queue Management + * ======================= + */ + +/* + * Adds a stream to the accept queue. + */ +void ossl_quic_stream_map_push_accept_queue(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *s); + +/* + * Returns the next item to be popped from the accept queue, or NULL if it is + * empty. + */ +QUIC_STREAM *ossl_quic_stream_map_peek_accept_queue(QUIC_STREAM_MAP *qsm); + +/* + * Removes a stream from the accept queue. rtt is the estimated connection RTT. + * The stream is retired for the purposes of MAX_STREAMS RXFC. + * + * Precondition: s is in the accept queue. + */ +void ossl_quic_stream_map_remove_from_accept_queue(QUIC_STREAM_MAP *qsm, + QUIC_STREAM *s, + OSSL_TIME rtt); + +/* Returns the length of the accept queue. */ +size_t ossl_quic_stream_map_get_accept_queue_len(QUIC_STREAM_MAP *qsm); + +/* + * Shutdown Flush and GC + * ===================== + */ + +/* + * Delete streams ready for GC. Pointers to those QUIC_STREAM objects become + * invalid. + */ +void ossl_quic_stream_map_gc(QUIC_STREAM_MAP *qsm); + +/* + * Begins shutdown stream flush triage. Analyses all streams, including deleted + * but not yet GC'd streams, to determine if we should wait for that stream to + * be fully flushed before shutdown. After calling this, call + * ossl_quic_stream_map_is_shutdown_flush_finished() to determine if all + * shutdown flush eligible streams have been flushed. + */ +void ossl_quic_stream_map_begin_shutdown_flush(QUIC_STREAM_MAP *qsm); + +/* + * Returns 1 if all shutdown flush eligible streams have finished flushing, + * or if ossl_quic_stream_map_begin_shutdown_flush() has not been called. + */ +int ossl_quic_stream_map_is_shutdown_flush_finished(QUIC_STREAM_MAP *qsm); + +/* + * QUIC Stream Iterator + * ==================== + * + * Allows the current set of active streams to be walked using a RR-based + * algorithm. Each time ossl_quic_stream_iter_init is called, the RR algorithm + * is stepped. The RR algorithm rotates the iteration order such that the next + * active stream is returned first after n calls to ossl_quic_stream_iter_init, + * where n is the stepping value configured via + * ossl_quic_stream_map_set_rr_stepping. + * + * Suppose there are three active streams and the configured stepping is n: + * + * Iteration 0n: [Stream 1] [Stream 2] [Stream 3] + * Iteration 1n: [Stream 2] [Stream 3] [Stream 1] + * Iteration 2n: [Stream 3] [Stream 1] [Stream 2] + * + */ +typedef struct quic_stream_iter_st { + QUIC_STREAM_MAP *qsm; + QUIC_STREAM *first_stream, *stream; +} QUIC_STREAM_ITER; + +/* + * Initialise an iterator, advancing the RR algorithm as necessary (if + * advance_rr is 1). After calling this, it->stream will be the first stream in + * the iteration sequence, or NULL if there are no active streams. + */ +void ossl_quic_stream_iter_init(QUIC_STREAM_ITER *it, QUIC_STREAM_MAP *qsm, + int advance_rr); + +/* + * Advances to next stream in iteration sequence. You do not need to call this + * immediately after calling ossl_quic_stream_iter_init(). If the end of the + * list is reached, it->stream will be NULL after calling this. + */ +void ossl_quic_stream_iter_next(QUIC_STREAM_ITER *it); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_thread_assist.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_thread_assist.h new file mode 100644 index 00000000..592c2ffa --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_thread_assist.h @@ -0,0 +1,102 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_THREAD_ASSIST_H +# define OSSL_QUIC_THREAD_ASSIST_H + +# include +# include "internal/thread.h" +# include "internal/time.h" + +# if defined(OPENSSL_NO_QUIC) || defined(OPENSSL_NO_THREAD_POOL) +# define OPENSSL_NO_QUIC_THREAD_ASSIST +# endif + +# ifndef OPENSSL_NO_QUIC_THREAD_ASSIST + +/* + * QUIC Thread Assisted Functionality + * ================================== + * + * Where OS threading support is available, QUIC can optionally support a thread + * assisted mode of operation. The purpose of this mode of operation is to + * ensure that assorted timeout events which QUIC expects to be handled in a + * timely manner can be handled without the application needing to ensure that + * SSL_tick() is called on time. This is not needed if the application always + * has a call blocking to SSL_read() or SSL_write() (or another I/O function) on + * a QUIC SSL object, but if the application goes for long periods of time + * without making any such call to a QUIC SSL object, libssl cannot ordinarily + * guarantee that QUIC timeout events will be serviced in a timely fashion. + * Thread assisted mode is therefore of use to applications which do not always + * have an ongoing call to an I/O function on a QUIC SSL object but also do not + * want to have to arrange periodic ticking. + * + * A consequence of this is that the intrusiveness of thread assisted mode upon + * the general architecture of our QUIC engine is actually fairly limited and + * amounts to an automatic ticking of the QUIC engine when timeouts expire, + * synchronised correctly with an application's own threads using locking. + */ +typedef struct quic_thread_assist_st { + QUIC_CHANNEL *ch; + CRYPTO_CONDVAR *cv; + CRYPTO_THREAD *t; + int teardown, joined; + OSSL_TIME (*now_cb)(void *arg); + void *now_cb_arg; +} QUIC_THREAD_ASSIST; + +/* + * Initialise the thread assist object. The channel must have a valid mutex + * configured on it which will be retrieved automatically. It is assumed that + * the mutex is currently held when this function is called. This function does + * not affect the state of the mutex. + */ +int ossl_quic_thread_assist_init_start(QUIC_THREAD_ASSIST *qta, + QUIC_CHANNEL *ch, + OSSL_TIME (*now_cb)(void *arg), + void *now_cb_arg); + +/* + * Request the thread assist helper to begin stopping the assist thread. This + * returns before the teardown is complete. Idempotent; multiple calls to this + * function are inconsequential. + * + * Precondition: channel mutex must be held (unchecked) + */ +int ossl_quic_thread_assist_stop_async(QUIC_THREAD_ASSIST *qta); + +/* + * Wait until the thread assist helper is torn down. This automatically implies + * the effects of ossl_quic_thread_assist_stop_async(). Returns immediately + * if the teardown has already completed. + * + * Precondition: channel mutex must be held (unchecked) + */ +int ossl_quic_thread_assist_wait_stopped(QUIC_THREAD_ASSIST *qta); + +/* + * Deallocates state associated with the thread assist helper. + * ossl_quic_thread_assist_wait_stopped() must have returned successfully before + * calling this. It does not matter whether the channel mutex is held or not. + * + * Precondition: ossl_quic_thread_assist_wait_stopped() has returned 1 + * (asserted) + */ +int ossl_quic_thread_assist_cleanup(QUIC_THREAD_ASSIST *qta); + +/* + * Must be called to notify the assist thread if the channel deadline changes. + * + * Precondition: channel mutex must be held (unchecked) + */ +int ossl_quic_thread_assist_notify_deadline_changed(QUIC_THREAD_ASSIST *qta); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tls.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tls.h new file mode 100644 index 00000000..0e4a9d33 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tls.h @@ -0,0 +1,106 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TLS_H +# define OSSL_QUIC_TLS_H + +# include +# include "internal/quic_stream.h" + + +typedef struct quic_tls_st QUIC_TLS; + +typedef struct quic_tls_args_st { + /* + * The "inner" SSL object for the QUIC Connection. Contains an + * SSL_CONNECTION + */ + SSL *s; + + /* + * Called to send data on the crypto stream. We use a callback rather than + * passing the crypto stream QUIC_SSTREAM directly because this lets the CSM + * dynamically select the correct outgoing crypto stream based on the + * current EL. + */ + int (*crypto_send_cb)(const unsigned char *buf, size_t buf_len, + size_t *consumed, void *arg); + void *crypto_send_cb_arg; + + /* + * Call to receive crypto stream data. A pointer to the underlying buffer + * is provided, and subsequently released to avoid unnecessary copying of + * data. + */ + int (*crypto_recv_rcd_cb)(const unsigned char **buf, size_t *bytes_read, + void *arg); + void *crypto_recv_rcd_cb_arg; + int (*crypto_release_rcd_cb)(size_t bytes_read, void *arg); + void *crypto_release_rcd_cb_arg; + + + /* Called when a traffic secret is available for a given encryption level. */ + int (*yield_secret_cb)(uint32_t enc_level, int direction /* 0=RX, 1=TX */, + uint32_t suite_id, EVP_MD *md, + const unsigned char *secret, size_t secret_len, + void *arg); + void *yield_secret_cb_arg; + + /* + * Called when we receive transport parameters from the peer. + * + * Note: These parameters are not authenticated until the handshake is + * marked as completed. + */ + int (*got_transport_params_cb)(const unsigned char *params, + size_t params_len, + void *arg); + void *got_transport_params_cb_arg; + + /* + * Called when the handshake has been completed as far as the handshake + * protocol is concerned, meaning that the connection has been + * authenticated. + */ + int (*handshake_complete_cb)(void *arg); + void *handshake_complete_cb_arg; + + /* + * Called when something has gone wrong with the connection as far as the + * handshake layer is concerned, meaning that it should be immediately torn + * down. Note that this may happen at any time, including after a connection + * has been fully established. + */ + int (*alert_cb)(void *arg, unsigned char alert_code); + void *alert_cb_arg; + + /* Set to 1 if we are running in the server role. */ + int is_server; +} QUIC_TLS_ARGS; + +QUIC_TLS *ossl_quic_tls_new(const QUIC_TLS_ARGS *args); + +void ossl_quic_tls_free(QUIC_TLS *qtls); + +/* Advance the state machine */ +int ossl_quic_tls_tick(QUIC_TLS *qtls); + +int ossl_quic_tls_set_transport_params(QUIC_TLS *qtls, + const unsigned char *transport_params, + size_t transport_params_len); + +int ossl_quic_tls_get_error(QUIC_TLS *qtls, + uint64_t *error_code, + const char **error_msg, + ERR_STATE **error_state); + +int ossl_quic_tls_is_cert_request(QUIC_TLS *qtls); +int ossl_quic_tls_has_bad_max_early_data(QUIC_TLS *qtls); + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tserver.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tserver.h new file mode 100644 index 00000000..4f358dd4 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_tserver.h @@ -0,0 +1,220 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TSERVER_H +# define OSSL_QUIC_TSERVER_H + +# include +# include +# include "internal/quic_stream.h" +# include "internal/quic_channel.h" +# include "internal/statem.h" +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Test Server Module + * ======================= + * + * This implements a QUIC test server. Since full QUIC server support is not yet + * implemented this server is limited in features and scope. It exists to + * provide a target for our QUIC client to talk to for testing purposes. + * + * A given QUIC test server instance supports only one client at a time. + * + * Note that this test server is not suitable for production use because it does + * not implement address verification, anti-amplification or retry logic. + */ +typedef struct quic_tserver_st QUIC_TSERVER; + +typedef struct quic_tserver_args_st { + OSSL_LIB_CTX *libctx; + const char *propq; + SSL_CTX *ctx; + BIO *net_rbio, *net_wbio; + OSSL_TIME (*now_cb)(void *arg); + void *now_cb_arg; + const unsigned char *alpn; + size_t alpnlen; +} QUIC_TSERVER_ARGS; + +QUIC_TSERVER *ossl_quic_tserver_new(const QUIC_TSERVER_ARGS *args, + const char *certfile, const char *keyfile); + +void ossl_quic_tserver_free(QUIC_TSERVER *srv); + +/* Set mutator callbacks for test framework support */ +int ossl_quic_tserver_set_plain_packet_mutator(QUIC_TSERVER *srv, + ossl_mutate_packet_cb mutatecb, + ossl_finish_mutate_cb finishmutatecb, + void *mutatearg); + +int ossl_quic_tserver_set_handshake_mutator(QUIC_TSERVER *srv, + ossl_statem_mutate_handshake_cb mutate_handshake_cb, + ossl_statem_finish_mutate_handshake_cb finish_mutate_handshake_cb, + void *mutatearg); + +/* Advances the state machine. */ +int ossl_quic_tserver_tick(QUIC_TSERVER *srv); + +/* Returns 1 if we have a (non-terminated) client. */ +int ossl_quic_tserver_is_connected(QUIC_TSERVER *srv); + +/* + * Returns 1 if we have finished the TLS handshake + */ +int ossl_quic_tserver_is_handshake_confirmed(const QUIC_TSERVER *srv); + +/* Returns 1 if the server is in any terminating or terminated state */ +int ossl_quic_tserver_is_term_any(const QUIC_TSERVER *srv); + +const QUIC_TERMINATE_CAUSE * +ossl_quic_tserver_get_terminate_cause(const QUIC_TSERVER *srv); + +/* Returns 1 if the server is in a terminated state */ +int ossl_quic_tserver_is_terminated(const QUIC_TSERVER *srv); + +/* + * Attempts to read from stream 0. Writes the number of bytes read to + * *bytes_read and returns 1 on success. If no bytes are available, 0 is written + * to *bytes_read and 1 is returned (this is considered a success case). + * + * Returns 0 if connection is not currently active. If the receive part of + * the stream has reached the end of stream condition, returns 0; call + * ossl_quic_tserver_has_read_ended() to identify this condition. + */ +int ossl_quic_tserver_read(QUIC_TSERVER *srv, + uint64_t stream_id, + unsigned char *buf, + size_t buf_len, + size_t *bytes_read); + +/* + * Returns 1 if the read part of the stream has ended normally. + */ +int ossl_quic_tserver_has_read_ended(QUIC_TSERVER *srv, uint64_t stream_id); + +/* + * Attempts to write to the given stream. Writes the number of bytes consumed to + * *bytes_written and returns 1 on success. If there is no space currently + * available to write any bytes, 0 is written to *consumed and 1 is returned + * (this is considered a success case). + * + * Note that unlike libssl public APIs, this API always works in a 'partial + * write' mode. + * + * Returns 0 if connection is not currently active. + */ +int ossl_quic_tserver_write(QUIC_TSERVER *srv, + uint64_t stream_id, + const unsigned char *buf, + size_t buf_len, + size_t *bytes_written); + +/* + * Signals normal end of the stream. + */ +int ossl_quic_tserver_conclude(QUIC_TSERVER *srv, uint64_t stream_id); + +/* + * Create a server-initiated stream. The stream ID of the newly + * created stream is written to *stream_id. + */ +int ossl_quic_tserver_stream_new(QUIC_TSERVER *srv, + int is_uni, + uint64_t *stream_id); + +BIO *ossl_quic_tserver_get0_rbio(QUIC_TSERVER *srv); + +SSL_CTX *ossl_quic_tserver_get0_ssl_ctx(QUIC_TSERVER *srv); + +/* + * Returns 1 if the peer has sent a STOP_SENDING frame for a stream. + * app_error_code is written if this returns 1. + */ +int ossl_quic_tserver_stream_has_peer_stop_sending(QUIC_TSERVER *srv, + uint64_t stream_id, + uint64_t *app_error_code); + +/* + * Returns 1 if the peer has sent a RESET_STREAM frame for a stream. + * app_error_code is written if this returns 1. + */ +int ossl_quic_tserver_stream_has_peer_reset_stream(QUIC_TSERVER *srv, + uint64_t stream_id, + uint64_t *app_error_code); + +/* + * Replaces existing local connection ID in the underlying QUIC_CHANNEL. + */ +int ossl_quic_tserver_set_new_local_cid(QUIC_TSERVER *srv, + const QUIC_CONN_ID *conn_id); + +/* + * Returns the stream ID of the next incoming stream, or UINT64_MAX if there + * currently is none. + */ +uint64_t ossl_quic_tserver_pop_incoming_stream(QUIC_TSERVER *srv); + +/* + * Returns 1 if all data sent on the given stream_id has been acked by the peer. + */ +int ossl_quic_tserver_is_stream_totally_acked(QUIC_TSERVER *srv, + uint64_t stream_id); + +/* Returns 1 if we are currently interested in reading data from the network */ +int ossl_quic_tserver_get_net_read_desired(QUIC_TSERVER *srv); + +/* Returns 1 if we are currently interested in writing data to the network */ +int ossl_quic_tserver_get_net_write_desired(QUIC_TSERVER *srv); + +/* Returns the next event deadline */ +OSSL_TIME ossl_quic_tserver_get_deadline(QUIC_TSERVER *srv); + +/* + * Shutdown the QUIC connection. Returns 1 if the connection is terminated and + * 0 otherwise. + */ +int ossl_quic_tserver_shutdown(QUIC_TSERVER *srv, uint64_t app_error_code); + +/* Force generation of an ACK-eliciting packet. */ +int ossl_quic_tserver_ping(QUIC_TSERVER *srv); + +/* Set tracing callback on channel. */ +void ossl_quic_tserver_set_msg_callback(QUIC_TSERVER *srv, + void (*f)(int write_p, int version, + int content_type, + const void *buf, size_t len, + SSL *ssl, void *arg), + void *arg); + +/* + * This is similar to ossl_quic_conn_get_channel; it should be used for test + * instrumentation only and not to bypass QUIC_TSERVER for 'normal' operations. + */ +QUIC_CHANNEL *ossl_quic_tserver_get_channel(QUIC_TSERVER *srv); + +/* Send a TLS new session ticket */ +int ossl_quic_tserver_new_ticket(QUIC_TSERVER *srv); + +/* + * Set the max_early_data value to be sent in NewSessionTickets. Only the + * values 0 and 0xffffffff are valid for use in QUIC. + */ +int ossl_quic_tserver_set_max_early_data(QUIC_TSERVER *srv, + uint32_t max_early_data); + +/* Set the find session callback for getting a server PSK */ +void ossl_quic_tserver_set_psk_find_session_cb(QUIC_TSERVER *srv, + SSL_psk_find_session_cb_func cb); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txp.h new file mode 100644 index 00000000..ae508f23 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txp.h @@ -0,0 +1,209 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TXP_H +# define OSSL_QUIC_TXP_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_record_tx.h" +# include "internal/quic_cfq.h" +# include "internal/quic_txpim.h" +# include "internal/quic_stream.h" +# include "internal/quic_stream_map.h" +# include "internal/quic_fc.h" +# include "internal/bio_addr.h" +# include "internal/time.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC TX Packetiser + * ================== + */ +typedef struct ossl_quic_tx_packetiser_args_st { + /* Configuration Settings */ + QUIC_CONN_ID cur_scid; /* Current Source Connection ID we use. */ + QUIC_CONN_ID cur_dcid; /* Current Destination Connection ID we use. */ + BIO_ADDR peer; /* Current destination L4 address we use. */ + uint32_t ack_delay_exponent; /* ACK delay exponent used when encoding. */ + + /* Injected Dependencies */ + OSSL_QTX *qtx; /* QUIC Record Layer TX we are using */ + QUIC_TXPIM *txpim; /* QUIC TX'd Packet Information Manager */ + QUIC_CFQ *cfq; /* QUIC Control Frame Queue */ + OSSL_ACKM *ackm; /* QUIC Acknowledgement Manager */ + QUIC_STREAM_MAP *qsm; /* QUIC Streams Map */ + QUIC_TXFC *conn_txfc; /* QUIC Connection-Level TX Flow Controller */ + QUIC_RXFC *conn_rxfc; /* QUIC Connection-Level RX Flow Controller */ + QUIC_RXFC *max_streams_bidi_rxfc; /* QUIC RXFC for MAX_STREAMS generation */ + QUIC_RXFC *max_streams_uni_rxfc; + const OSSL_CC_METHOD *cc_method; /* QUIC Congestion Controller */ + OSSL_CC_DATA *cc_data; /* QUIC Congestion Controller Instance */ + OSSL_TIME (*now)(void *arg); /* Callback to get current time. */ + void *now_arg; + + /* + * Injected dependencies - crypto streams. + * + * Note: There is no crypto stream for the 0-RTT EL. + * crypto[QUIC_PN_SPACE_APP] is the 1-RTT crypto stream. + */ + QUIC_SSTREAM *crypto[QUIC_PN_SPACE_NUM]; + + } OSSL_QUIC_TX_PACKETISER_ARGS; + +typedef struct ossl_quic_tx_packetiser_st OSSL_QUIC_TX_PACKETISER; + +OSSL_QUIC_TX_PACKETISER *ossl_quic_tx_packetiser_new(const OSSL_QUIC_TX_PACKETISER_ARGS *args); + +typedef void (ossl_quic_initial_token_free_fn)(const unsigned char *buf, + size_t buf_len, void *arg); + +void ossl_quic_tx_packetiser_free(OSSL_QUIC_TX_PACKETISER *txp); + +/* + * When in the closing state we need to maintain a count of received bytes + * so that we can limit the number of close connection frames we send. + * Refer RFC 9000 s. 10.2.1 Closing Connection State. + */ +void ossl_quic_tx_packetiser_record_received_closing_bytes( + OSSL_QUIC_TX_PACKETISER *txp, size_t n); + +/* + * Generates a datagram by polling the various ELs to determine if they want to + * generate any frames, and generating a datagram which coalesces packets for + * any ELs which do. + * + * Returns 0 on failure (e.g. allocation error or other errors), 1 otherwise. + * + * *status is filled with status information about the generated packet. + * It is always filled even in case of failure. In particular, packets can be + * sent even if failure is later returned. + * See QUIC_TXP_STATUS for details. + */ +typedef struct quic_txp_status_st { + int sent_ack_eliciting; /* Was an ACK-eliciting packet sent? */ + int sent_handshake; /* Was a Handshake packet sent? */ + size_t sent_pkt; /* Number of packets sent (0 if nothing was sent) */ +} QUIC_TXP_STATUS; + +int ossl_quic_tx_packetiser_generate(OSSL_QUIC_TX_PACKETISER *txp, + QUIC_TXP_STATUS *status); + +/* + * Returns a deadline after which a call to ossl_quic_tx_packetiser_generate() + * might succeed even if it did not previously. This may return + * ossl_time_infinite() if there is no such deadline currently applicable. It + * returns ossl_time_zero() if there is (potentially) more data to be generated + * immediately. The value returned is liable to change after any call to + * ossl_quic_tx_packetiser_generate() (or after ACKM or CC state changes). Note + * that ossl_quic_tx_packetiser_generate() can also start to succeed for other + * non-chronological reasons, such as changes to send stream buffers, etc. + */ +OSSL_TIME ossl_quic_tx_packetiser_get_deadline(OSSL_QUIC_TX_PACKETISER *txp); + +/* + * Set the token used in Initial packets. The callback is called when the buffer + * is no longer needed; for example, when the TXP is freed or when this function + * is called again with a new buffer. Fails returning 0 if the token is too big + * to ever be reasonably encapsulated in an outgoing packet based on our current + * understanding of our PMTU. + */ +int ossl_quic_tx_packetiser_set_initial_token(OSSL_QUIC_TX_PACKETISER *txp, + const unsigned char *token, + size_t token_len, + ossl_quic_initial_token_free_fn *free_cb, + void *free_cb_arg); + +/* Change the DCID the TXP uses to send outgoing packets. */ +int ossl_quic_tx_packetiser_set_cur_dcid(OSSL_QUIC_TX_PACKETISER *txp, + const QUIC_CONN_ID *dcid); + +/* Change the SCID the TXP uses to send outgoing (long) packets. */ +int ossl_quic_tx_packetiser_set_cur_scid(OSSL_QUIC_TX_PACKETISER *txp, + const QUIC_CONN_ID *scid); + +/* + * Change the destination L4 address the TXP uses to send datagrams. Specify + * NULL (or AF_UNSPEC) to disable use of addressed mode. + */ +int ossl_quic_tx_packetiser_set_peer(OSSL_QUIC_TX_PACKETISER *txp, + const BIO_ADDR *peer); + +/* + * Inform the TX packetiser that an EL has been discarded. Idempotent. + * + * This does not inform the QTX as well; the caller must also inform the QTX. + * + * The TXP will no longer reference the crypto[enc_level] QUIC_SSTREAM which was + * provided in the TXP arguments. However, it is the callers responsibility to + * free that QUIC_SSTREAM if desired. + */ +int ossl_quic_tx_packetiser_discard_enc_level(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t enc_level); + +/* + * Informs the TX packetiser that the handshake is complete. The TX packetiser + * will not send 1-RTT application data until the handshake is complete, + * as the authenticity of the peer is not confirmed until the handshake + * complete event occurs. + */ +void ossl_quic_tx_packetiser_notify_handshake_complete(OSSL_QUIC_TX_PACKETISER *txp); + +/* Asks the TXP to generate a HANDSHAKE_DONE frame in the next 1-RTT packet. */ +void ossl_quic_tx_packetiser_schedule_handshake_done(OSSL_QUIC_TX_PACKETISER *txp); + +/* Asks the TXP to ensure the next packet in the given PN space is ACK-eliciting. */ +void ossl_quic_tx_packetiser_schedule_ack_eliciting(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t pn_space); + +/* + * Asks the TXP to ensure an ACK is put in the next packet in the given PN + * space. + */ +void ossl_quic_tx_packetiser_schedule_ack(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t pn_space); + +/* + * Schedules a connection close. *f and f->reason are copied. This operation is + * irreversible and causes all further packets generated by the TXP to contain a + * CONNECTION_CLOSE frame. This function fails if it has already been called + * successfully; the information in *f cannot be changed after the first + * successful call to this function. + */ +int ossl_quic_tx_packetiser_schedule_conn_close(OSSL_QUIC_TX_PACKETISER *txp, + const OSSL_QUIC_FRAME_CONN_CLOSE *f); + +/* Setters for the msg_callback and msg_callback_arg */ +void ossl_quic_tx_packetiser_set_msg_callback(OSSL_QUIC_TX_PACKETISER *txp, + ossl_msg_cb msg_callback, + SSL *msg_callback_ssl); +void ossl_quic_tx_packetiser_set_msg_callback_arg(OSSL_QUIC_TX_PACKETISER *txp, + void *msg_callback_arg); + +/* + * Determines the next PN which will be used for a given PN space. + */ +QUIC_PN ossl_quic_tx_packetiser_get_next_pn(OSSL_QUIC_TX_PACKETISER *txp, + uint32_t pn_space); + +/* + * Sets a callback which is called whenever TXP sends an ACK frame. The callee + * must not modify the ACK frame data. Can be used to snoop on PNs being ACKed. + */ +void ossl_quic_tx_packetiser_set_ack_tx_cb(OSSL_QUIC_TX_PACKETISER *txp, + void (*cb)(const OSSL_QUIC_FRAME_ACK *ack, + uint32_t pn_space, + void *arg), + void *cb_arg); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txpim.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txpim.h new file mode 100644 index 00000000..ed6e3875 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_txpim.h @@ -0,0 +1,133 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TXPIM_H +# define OSSL_QUIC_TXPIM_H + +# include +# include "internal/quic_types.h" +# include "internal/quic_cfq.h" +# include "internal/quic_ackm.h" + +# ifndef OPENSSL_NO_QUIC + +/* + * QUIC Transmitted Packet Information Manager + * =========================================== + */ +typedef struct quic_txpim_st QUIC_TXPIM; +typedef struct quic_fifd_st QUIC_FIFD; + +typedef struct quic_txpim_pkt_st { + /* ACKM-specific data. Caller should fill this. */ + OSSL_ACKM_TX_PKT ackm_pkt; + + /* Linked list of CFQ items in this packet. */ + QUIC_CFQ_ITEM *retx_head; + + /* Reserved for FIFD use. */ + QUIC_FIFD *fifd; + + /* Regenerate-strategy frames. */ + unsigned int had_handshake_done_frame : 1; + unsigned int had_max_data_frame : 1; + unsigned int had_max_streams_bidi_frame : 1; + unsigned int had_max_streams_uni_frame : 1; + unsigned int had_ack_frame : 1; + unsigned int had_conn_close : 1; + + /* Private data follows. */ +} QUIC_TXPIM_PKT; + +/* Represents a range of bytes in an application or CRYPTO stream. */ +typedef struct quic_txpim_chunk_st { + /* The stream ID, or UINT64_MAX for the CRYPTO stream. */ + uint64_t stream_id; + /* + * The inclusive range of bytes in the stream. Exceptionally, if end < + * start, designates a frame of zero length (used for FIN-only frames). In + * this case end is the number of the final byte (i.e., one less than the + * final size of the stream). + */ + uint64_t start, end; + /* + * Whether a FIN was sent for this stream in the packet. Not valid for + * CRYPTO stream. + */ + unsigned int has_fin : 1; + /* + * If set, a STOP_SENDING frame was sent for this stream ID. (If no data was + * sent for the stream, set end < start.) + */ + unsigned int has_stop_sending : 1; + /* + * If set, a RESET_STREAM frame was sent for this stream ID. (If no data was + * sent for the stream, set end < start.) + */ + unsigned int has_reset_stream : 1; +} QUIC_TXPIM_CHUNK; + +QUIC_TXPIM *ossl_quic_txpim_new(void); + +/* + * Frees the TXPIM. All QUIC_TXPIM_PKTs which have been handed out by the TXPIM + * must be released via a call to ossl_quic_txpim_pkt_release() before calling + * this function. + */ +void ossl_quic_txpim_free(QUIC_TXPIM *txpim); + +/* + * Allocates a new QUIC_TXPIM_PKT structure from the pool. Returns NULL on + * failure. The returned structure is cleared of all data and is in a fresh + * initial state. + */ +QUIC_TXPIM_PKT *ossl_quic_txpim_pkt_alloc(QUIC_TXPIM *txpim); + +/* + * Releases the TXPIM packet, returning it to the pool. + */ +void ossl_quic_txpim_pkt_release(QUIC_TXPIM *txpim, QUIC_TXPIM_PKT *fpkt); + +/* Clears the chunk list of the packet, removing all entries. */ +void ossl_quic_txpim_pkt_clear_chunks(QUIC_TXPIM_PKT *fpkt); + +/* Appends a chunk to the packet. The structure is copied. */ +int ossl_quic_txpim_pkt_append_chunk(QUIC_TXPIM_PKT *fpkt, + const QUIC_TXPIM_CHUNK *chunk); + +/* Adds a CFQ item to the packet by prepending it to the retx_head list. */ +void ossl_quic_txpim_pkt_add_cfq_item(QUIC_TXPIM_PKT *fpkt, + QUIC_CFQ_ITEM *item); + +/* + * Returns a pointer to an array of stream chunk information structures for the + * given packet. The caller must call ossl_quic_txpim_pkt_get_num_chunks() to + * determine the length of this array. The returned pointer is invalidated + * if the chunk list is mutated, for example via a call to + * ossl_quic_txpim_pkt_append_chunk() or ossl_quic_txpim_pkt_clear_chunks(). + * + * The chunks are sorted by (stream_id, start) in ascending order. + */ +const QUIC_TXPIM_CHUNK *ossl_quic_txpim_pkt_get_chunks(const QUIC_TXPIM_PKT *fpkt); + +/* + * Returns the number of entries in the array returned by + * ossl_quic_txpim_pkt_get_chunks(). + */ +size_t ossl_quic_txpim_pkt_get_num_chunks(const QUIC_TXPIM_PKT *fpkt); + +/* + * Returns the number of QUIC_TXPIM_PKTs allocated by the given TXPIM that have + * yet to be returned to the TXPIM. + */ +size_t ossl_quic_txpim_get_in_use(const QUIC_TXPIM *txpim); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_types.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_types.h new file mode 100644 index 00000000..d42164ba --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_types.h @@ -0,0 +1,116 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_TYPES_H +# define OSSL_QUIC_TYPES_H + +# include +# include +# include +# include + +# ifndef OPENSSL_NO_QUIC + +/* QUIC encryption levels. */ +enum { + QUIC_ENC_LEVEL_INITIAL = 0, + QUIC_ENC_LEVEL_HANDSHAKE, + QUIC_ENC_LEVEL_0RTT, + QUIC_ENC_LEVEL_1RTT, + QUIC_ENC_LEVEL_NUM /* Must be the ultimate entry */ +}; + +/* QUIC packet number spaces. */ +enum { + QUIC_PN_SPACE_INITIAL = 0, + QUIC_PN_SPACE_HANDSHAKE, + /* New entries must go here, so that QUIC_PN_SPACE_APP is the penultimate */ + QUIC_PN_SPACE_APP, + QUIC_PN_SPACE_NUM /* Must be the ultimate entry */ +}; + +static ossl_unused ossl_inline uint32_t +ossl_quic_enc_level_to_pn_space(uint32_t enc_level) +{ + switch (enc_level) { + case QUIC_ENC_LEVEL_INITIAL: + return QUIC_PN_SPACE_INITIAL; + case QUIC_ENC_LEVEL_HANDSHAKE: + return QUIC_PN_SPACE_HANDSHAKE; + case QUIC_ENC_LEVEL_0RTT: + case QUIC_ENC_LEVEL_1RTT: + return QUIC_PN_SPACE_APP; + default: + assert(0); + return QUIC_PN_SPACE_APP; + } +} + +/* QUIC packet number representation. */ +typedef uint64_t QUIC_PN; +# define QUIC_PN_INVALID UINT64_MAX + +static ossl_unused ossl_inline QUIC_PN ossl_quic_pn_max(QUIC_PN a, QUIC_PN b) +{ + return a > b ? a : b; +} + +static ossl_unused ossl_inline QUIC_PN ossl_quic_pn_min(QUIC_PN a, QUIC_PN b) +{ + return a < b ? a : b; +} + +static ossl_unused ossl_inline int ossl_quic_pn_valid(QUIC_PN pn) +{ + return pn < (((QUIC_PN)1) << 62); +} + +/* QUIC connection ID representation. */ +# define QUIC_MAX_CONN_ID_LEN 20 + +typedef struct quic_conn_id_st { + unsigned char id_len, id[QUIC_MAX_CONN_ID_LEN]; +} QUIC_CONN_ID; + +static ossl_unused ossl_inline int ossl_quic_conn_id_eq(const QUIC_CONN_ID *a, + const QUIC_CONN_ID *b) +{ + if (a->id_len != b->id_len || a->id_len > QUIC_MAX_CONN_ID_LEN) + return 0; + return memcmp(a->id, b->id, a->id_len) == 0; +} + +# define QUIC_MIN_INITIAL_DGRAM_LEN 1200 + +# define QUIC_DEFAULT_ACK_DELAY_EXP 3 +# define QUIC_MAX_ACK_DELAY_EXP 20 + +# define QUIC_DEFAULT_MAX_ACK_DELAY 25 + +# define QUIC_MIN_ACTIVE_CONN_ID_LIMIT 2 + +/* Arbitrary choice of default idle timeout (not an RFC value). */ +# define QUIC_DEFAULT_IDLE_TIMEOUT 30000 + +# define QUIC_STATELESS_RESET_TOKEN_LEN 16 + +typedef struct { + unsigned char token[QUIC_STATELESS_RESET_TOKEN_LEN]; +} QUIC_STATELESS_RESET_TOKEN; + +/* + * An encoded preferred_addr transport parameter cannot be shorter or longer + * than these lengths in bytes. + */ +# define QUIC_MIN_ENCODED_PREFERRED_ADDR_LEN 41 +# define QUIC_MAX_ENCODED_PREFERRED_ADDR_LEN 61 + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_vlint.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_vlint.h new file mode 100644 index 00000000..d4b70b22 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_vlint.h @@ -0,0 +1,127 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_VLINT_H +# define OSSL_INTERNAL_QUIC_VLINT_H +# pragma once + +# include "internal/e_os.h" + +# ifndef OPENSSL_NO_QUIC + +/* The smallest value requiring a 1, 2, 4, or 8-byte representation. */ +#define OSSL_QUIC_VLINT_1B_MIN 0 +#define OSSL_QUIC_VLINT_2B_MIN 64 +#define OSSL_QUIC_VLINT_4B_MIN 16384 +#define OSSL_QUIC_VLINT_8B_MIN 1073741824 + +/* The largest value representable in a given number of bytes. */ +#define OSSL_QUIC_VLINT_1B_MAX (OSSL_QUIC_VLINT_2B_MIN - 1) +#define OSSL_QUIC_VLINT_2B_MAX (OSSL_QUIC_VLINT_4B_MIN - 1) +#define OSSL_QUIC_VLINT_4B_MAX (OSSL_QUIC_VLINT_8B_MIN - 1) +#define OSSL_QUIC_VLINT_8B_MAX (((uint64_t)1 << 62) - 1) + +/* The largest value representable as a variable-length integer. */ +#define OSSL_QUIC_VLINT_MAX OSSL_QUIC_VLINT_8B_MAX + +/* + * Returns the number of bytes needed to encode v in the QUIC variable-length + * integer encoding. + * + * Returns 0 if v exceeds OSSL_QUIC_VLINT_MAX. + */ +static ossl_unused ossl_inline size_t ossl_quic_vlint_encode_len(uint64_t v) +{ + if (v < OSSL_QUIC_VLINT_2B_MIN) + return 1; + + if (v < OSSL_QUIC_VLINT_4B_MIN) + return 2; + + if (v < OSSL_QUIC_VLINT_8B_MIN) + return 4; + + if (v <= OSSL_QUIC_VLINT_MAX) + return 8; + + return 0; +} + +/* + * This function writes a QUIC varable-length encoded integer to buf. + * The smallest usable representation is used. + * + * It is the caller's responsibility to ensure that the buffer is big enough by + * calling ossl_quic_vlint_encode_len(v) before calling this function. + * + * Precondition: buf is at least ossl_quic_vlint_enc_len(v) bytes in size + * (unchecked) + * Precondition: v does not exceed OSSL_QUIC_VLINT_MAX + * (unchecked) + */ +void ossl_quic_vlint_encode(unsigned char *buf, uint64_t v); + +/* + * This function writes a QUIC variable-length encoded integer to buf. The + * specified number of bytes n are used for the encoding, which means that the + * encoded value may take up more space than necessary. + * + * It is the caller's responsibility to ensure that the buffer is of at least n + * bytes, and that v is representable by a n-byte QUIC variable-length integer. + * The representable ranges are: + * + * 1-byte encoding: [0, 2** 6-1] + * 2-byte encoding: [0, 2**14-1] + * 4-byte encoding: [0, 2**30-1] + * 8-byte encoding: [0, 2**62-1] + * + * Precondition: buf is at least n bytes in size (unchecked) + * Precondition: v does not exceed the representable range + * (ossl_quic_vlint_encode_len(v) <= n) (unchecked) + * Precondition: v does not exceed OSSL_QUIC_VLINT_MAX + * (unchecked) + */ +void ossl_quic_vlint_encode_n(unsigned char *buf, uint64_t v, int n); + +/* + * Given the first byte of an encoded QUIC variable-length integer, returns + * the number of bytes comprising the encoded integer, including the first + * byte. + */ +static ossl_unused ossl_inline size_t ossl_quic_vlint_decode_len(uint8_t first_byte) +{ + return 1U << ((first_byte & 0xC0) >> 6); +} + +/* + * Given a buffer containing an encoded QUIC variable-length integer, returns + * the decoded value. The buffer must be of at least + * ossl_quic_vlint_decode_len(buf[0]) bytes in size, and the caller is responsible + * for checking this. + * + * Precondition: buf is at least ossl_quic_vlint_decode_len(buf[0]) bytes in size + * (unchecked) + */ +uint64_t ossl_quic_vlint_decode_unchecked(const unsigned char *buf); + +/* + * Given a buffer buf of buf_len bytes in length, attempts to decode an encoded + * QUIC variable-length integer at the start of the buffer and writes the result + * to *v. If buf_len is inadequate, suggesting a truncated encoded integer, the + * function fails and 0 is returned. Otherwise, returns the number of bytes + * consumed. + * + * Precondition: buf is at least buf_len bytes in size + * Precondition: v (unchecked) + */ +int ossl_quic_vlint_decode(const unsigned char *buf, size_t buf_len, uint64_t *v); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire.h new file mode 100644 index 00000000..cd01feb0 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire.h @@ -0,0 +1,784 @@ +/* +* Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. +* +* Licensed under the Apache License 2.0 (the "License"). You may not use +* this file except in compliance with the License. You can obtain a copy +* in the file LICENSE in the source distribution or at +* https://www.openssl.org/source/license.html +*/ + +#ifndef OSSL_INTERNAL_QUIC_WIRE_H +# define OSSL_INTERNAL_QUIC_WIRE_H +# pragma once + +# include "internal/e_os.h" +# include "internal/time.h" +# include "internal/quic_types.h" +# include "internal/packet_quic.h" + +# ifndef OPENSSL_NO_QUIC + +# define OSSL_QUIC_FRAME_TYPE_PADDING 0x00 +# define OSSL_QUIC_FRAME_TYPE_PING 0x01 +# define OSSL_QUIC_FRAME_TYPE_ACK_WITHOUT_ECN 0x02 +# define OSSL_QUIC_FRAME_TYPE_ACK_WITH_ECN 0x03 +# define OSSL_QUIC_FRAME_TYPE_RESET_STREAM 0x04 +# define OSSL_QUIC_FRAME_TYPE_STOP_SENDING 0x05 +# define OSSL_QUIC_FRAME_TYPE_CRYPTO 0x06 +# define OSSL_QUIC_FRAME_TYPE_NEW_TOKEN 0x07 +# define OSSL_QUIC_FRAME_TYPE_MAX_DATA 0x10 +# define OSSL_QUIC_FRAME_TYPE_MAX_STREAM_DATA 0x11 +# define OSSL_QUIC_FRAME_TYPE_MAX_STREAMS_BIDI 0x12 +# define OSSL_QUIC_FRAME_TYPE_MAX_STREAMS_UNI 0x13 +# define OSSL_QUIC_FRAME_TYPE_DATA_BLOCKED 0x14 +# define OSSL_QUIC_FRAME_TYPE_STREAM_DATA_BLOCKED 0x15 +# define OSSL_QUIC_FRAME_TYPE_STREAMS_BLOCKED_BIDI 0x16 +# define OSSL_QUIC_FRAME_TYPE_STREAMS_BLOCKED_UNI 0x17 +# define OSSL_QUIC_FRAME_TYPE_NEW_CONN_ID 0x18 +# define OSSL_QUIC_FRAME_TYPE_RETIRE_CONN_ID 0x19 +# define OSSL_QUIC_FRAME_TYPE_PATH_CHALLENGE 0x1A +# define OSSL_QUIC_FRAME_TYPE_PATH_RESPONSE 0x1B +# define OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_TRANSPORT 0x1C +# define OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_APP 0x1D +# define OSSL_QUIC_FRAME_TYPE_HANDSHAKE_DONE 0x1E + +# define OSSL_QUIC_FRAME_FLAG_STREAM_FIN 0x01 +# define OSSL_QUIC_FRAME_FLAG_STREAM_LEN 0x02 +# define OSSL_QUIC_FRAME_FLAG_STREAM_OFF 0x04 +# define OSSL_QUIC_FRAME_FLAG_STREAM_MASK ((uint64_t)0x07) + +/* Low 3 bits of the type contain flags */ +# define OSSL_QUIC_FRAME_TYPE_STREAM 0x08 /* base ID */ +# define OSSL_QUIC_FRAME_TYPE_STREAM_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_LEN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_LEN_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF_LEN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN) +# define OSSL_QUIC_FRAME_TYPE_STREAM_OFF_LEN_FIN \ + (OSSL_QUIC_FRAME_TYPE_STREAM | \ + OSSL_QUIC_FRAME_FLAG_STREAM_OFF | \ + OSSL_QUIC_FRAME_FLAG_STREAM_LEN | \ + OSSL_QUIC_FRAME_FLAG_STREAM_FIN) + +# define OSSL_QUIC_FRAME_TYPE_IS_STREAM(x) \ + (((x) & ~OSSL_QUIC_FRAME_FLAG_STREAM_MASK) == OSSL_QUIC_FRAME_TYPE_STREAM) +# define OSSL_QUIC_FRAME_TYPE_IS_ACK(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_ACK_WITHOUT_ECN) +# define OSSL_QUIC_FRAME_TYPE_IS_MAX_STREAMS(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_MAX_STREAMS_BIDI) +# define OSSL_QUIC_FRAME_TYPE_IS_STREAMS_BLOCKED(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_STREAMS_BLOCKED_BIDI) +# define OSSL_QUIC_FRAME_TYPE_IS_CONN_CLOSE(x) \ + (((x) & ~(uint64_t)1) == OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_TRANSPORT) + +const char *ossl_quic_frame_type_to_string(uint64_t frame_type); + +static ossl_unused ossl_inline int +ossl_quic_frame_type_is_ack_eliciting(uint64_t frame_type) +{ + switch (frame_type) { + case OSSL_QUIC_FRAME_TYPE_PADDING: + case OSSL_QUIC_FRAME_TYPE_ACK_WITHOUT_ECN: + case OSSL_QUIC_FRAME_TYPE_ACK_WITH_ECN: + case OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_TRANSPORT: + case OSSL_QUIC_FRAME_TYPE_CONN_CLOSE_APP: + return 0; + default: + return 1; + } +} + +/* QUIC Transport Parameter Types */ +# define QUIC_TPARAM_ORIG_DCID 0x00 +# define QUIC_TPARAM_MAX_IDLE_TIMEOUT 0x01 +# define QUIC_TPARAM_STATELESS_RESET_TOKEN 0x02 +# define QUIC_TPARAM_MAX_UDP_PAYLOAD_SIZE 0x03 +# define QUIC_TPARAM_INITIAL_MAX_DATA 0x04 +# define QUIC_TPARAM_INITIAL_MAX_STREAM_DATA_BIDI_LOCAL 0x05 +# define QUIC_TPARAM_INITIAL_MAX_STREAM_DATA_BIDI_REMOTE 0x06 +# define QUIC_TPARAM_INITIAL_MAX_STREAM_DATA_UNI 0x07 +# define QUIC_TPARAM_INITIAL_MAX_STREAMS_BIDI 0x08 +# define QUIC_TPARAM_INITIAL_MAX_STREAMS_UNI 0x09 +# define QUIC_TPARAM_ACK_DELAY_EXP 0x0A +# define QUIC_TPARAM_MAX_ACK_DELAY 0x0B +# define QUIC_TPARAM_DISABLE_ACTIVE_MIGRATION 0x0C +# define QUIC_TPARAM_PREFERRED_ADDR 0x0D +# define QUIC_TPARAM_ACTIVE_CONN_ID_LIMIT 0x0E +# define QUIC_TPARAM_INITIAL_SCID 0x0F +# define QUIC_TPARAM_RETRY_SCID 0x10 + +/* + * QUIC Frame Logical Representations + * ================================== + */ + +/* QUIC Frame: ACK */ +typedef struct ossl_quic_ack_range_st { + /* + * Represents an inclusive range of packet numbers [start, end]. + * start must be <= end. + */ + QUIC_PN start, end; +} OSSL_QUIC_ACK_RANGE; + +typedef struct ossl_quic_frame_ack_st { + /* + * A sequence of packet number ranges [[start, end]...]. + * + * The ranges must be sorted in descending order, for example: + * [ 95, 100] + * [ 90, 92] + * etc. + * + * As such, ack_ranges[0].end is always the highest packet number + * being acknowledged and ack_ranges[num_ack_ranges-1].start is + * always the lowest packet number being acknowledged. + * + * num_ack_ranges must be greater than zero, as an ACK frame must + * acknowledge at least one packet number. + */ + OSSL_QUIC_ACK_RANGE *ack_ranges; + size_t num_ack_ranges; + + OSSL_TIME delay_time; + uint64_t ect0, ect1, ecnce; + unsigned int ecn_present : 1; +} OSSL_QUIC_FRAME_ACK; + +/* Returns 1 if the given frame contains the given PN. */ +int ossl_quic_frame_ack_contains_pn(const OSSL_QUIC_FRAME_ACK *ack, QUIC_PN pn); + +/* QUIC Frame: STREAM */ +typedef struct ossl_quic_frame_stream_st { + uint64_t stream_id; /* Stream ID */ + uint64_t offset; /* Logical offset in stream */ + uint64_t len; /* Length of data in bytes */ + const unsigned char *data; + + /* + * On encode, this determines whether the len field should be encoded or + * not. If zero, the len field is not encoded and it is assumed the frame + * runs to the end of the packet. + * + * On decode, this determines whether the frame had an explicitly encoded + * length. If not set, the frame runs to the end of the packet and len has + * been set accordingly. + */ + unsigned int has_explicit_len : 1; + + /* 1 if this is the end of the stream */ + unsigned int is_fin : 1; +} OSSL_QUIC_FRAME_STREAM; + +/* QUIC Frame: CRYPTO */ +typedef struct ossl_quic_frame_crypto_st { + uint64_t offset; /* Logical offset in stream */ + uint64_t len; /* Length of the data in bytes */ + const unsigned char *data; +} OSSL_QUIC_FRAME_CRYPTO; + +/* QUIC Frame: RESET_STREAM */ +typedef struct ossl_quic_frame_reset_stream_st { + uint64_t stream_id; + uint64_t app_error_code; + uint64_t final_size; +} OSSL_QUIC_FRAME_RESET_STREAM; + +/* QUIC Frame: STOP_SENDING */ +typedef struct ossl_quic_frame_stop_sending_st { + uint64_t stream_id; + uint64_t app_error_code; +} OSSL_QUIC_FRAME_STOP_SENDING; + +/* QUIC Frame: NEW_CONNECTION_ID */ +typedef struct ossl_quic_frame_new_conn_id_st { + uint64_t seq_num; + uint64_t retire_prior_to; + QUIC_CONN_ID conn_id; + QUIC_STATELESS_RESET_TOKEN stateless_reset; +} OSSL_QUIC_FRAME_NEW_CONN_ID; + +/* QUIC Frame: CONNECTION_CLOSE */ +typedef struct ossl_quic_frame_conn_close_st { + unsigned int is_app : 1; /* 0: transport error, 1: app error */ + uint64_t error_code; /* 62-bit transport or app error code */ + uint64_t frame_type; /* transport errors only */ + char *reason; /* UTF-8 string, not necessarily zero-terminated */ + size_t reason_len; /* Length of reason in bytes */ +} OSSL_QUIC_FRAME_CONN_CLOSE; + +/* + * QUIC Wire Format Encoding + * ========================= + * + * These functions return 1 on success and 0 on failure. + */ + +/* + * Encodes zero or more QUIC PADDING frames to the packet writer. Each PADDING + * frame consumes one byte; num_bytes specifies the number of bytes of padding + * to write. + */ +int ossl_quic_wire_encode_padding(WPACKET *pkt, size_t num_bytes); + +/* + * Encodes a QUIC PING frame to the packet writer. This frame type takes + * no arguments. +*/ +int ossl_quic_wire_encode_frame_ping(WPACKET *pkt); + +/* + * Encodes a QUIC ACK frame to the packet writer, given a logical representation + * of the ACK frame. + * + * The ACK ranges passed must be sorted in descending order. + * + * The logical representation stores a list of packet number ranges. The wire + * encoding is slightly different and stores the first range in the list + * in a different manner. + * + * The ack_delay_exponent argument specifies the index of a power of two by + * which the ack->ack_delay field is be divided. This exponent value must match + * the value used when decoding. + */ +int ossl_quic_wire_encode_frame_ack(WPACKET *pkt, + uint32_t ack_delay_exponent, + const OSSL_QUIC_FRAME_ACK *ack); + +/* + * Encodes a QUIC RESET_STREAM frame to the packet writer, given a logical + * representation of the RESET_STREAM frame. + */ +int ossl_quic_wire_encode_frame_reset_stream(WPACKET *pkt, + const OSSL_QUIC_FRAME_RESET_STREAM *f); + +/* + * Encodes a QUIC STOP_SENDING frame to the packet writer, given a logical + * representation of the STOP_SENDING frame. + */ +int ossl_quic_wire_encode_frame_stop_sending(WPACKET *pkt, + const OSSL_QUIC_FRAME_STOP_SENDING *f); + +/* + * Encodes a QUIC CRYPTO frame header to the packet writer. + * + * To create a well-formed frame, the data written using this function must be + * immediately followed by f->len bytes of data. + */ +int ossl_quic_wire_encode_frame_crypto_hdr(WPACKET *hdr, + const OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Returns the number of bytes which will be required to encode the given + * CRYPTO frame header. Does not include the payload bytes in the count. + * Returns 0 if input is invalid. + */ +size_t ossl_quic_wire_get_encoded_frame_len_crypto_hdr(const OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Encodes a QUIC CRYPTO frame to the packet writer. + * + * This function returns a pointer to a buffer of f->len bytes which the caller + * should fill however it wishes. If f->data is non-NULL, it is automatically + * copied to the target buffer, otherwise the caller must fill the returned + * buffer. Returns NULL on failure. + */ +void *ossl_quic_wire_encode_frame_crypto(WPACKET *pkt, + const OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Encodes a QUIC NEW_TOKEN frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_new_token(WPACKET *pkt, + const unsigned char *token, + size_t token_len); + +/* + * Encodes a QUIC STREAM frame's header to the packet writer. The f->stream_id, + * f->offset and f->len fields are the values for the respective Stream ID, + * Offset and Length fields. + * + * If f->is_fin is non-zero, the frame is marked as the final frame in the + * stream. + * + * If f->has_explicit_len is zerro, the frame is assumed to be the final frame + * in the packet, which the caller is responsible for ensuring; the Length + * field is then omitted. + * + * To create a well-formed frame, the data written using this function must be + * immediately followed by f->len bytes of stream data. + */ +int ossl_quic_wire_encode_frame_stream_hdr(WPACKET *pkt, + const OSSL_QUIC_FRAME_STREAM *f); + +/* + * Returns the number of bytes which will be required to encode the given + * STREAM frame header. Does not include the payload bytes in the count. + * Returns 0 if input is invalid. + */ +size_t ossl_quic_wire_get_encoded_frame_len_stream_hdr(const OSSL_QUIC_FRAME_STREAM *f); + +/* + * Functions similarly to ossl_quic_wire_encode_frame_stream_hdr, but it also + * allocates space for f->len bytes of data after the header, creating a + * well-formed QUIC STREAM frame in one call. + * + * A pointer to the bytes allocated for the framme payload is returned, + * which the caller can fill however it wishes. If f->data is non-NULL, + * it is automatically copied to the target buffer, otherwise the caller + * must fill the returned buffer. Returns NULL on failure. + */ +void *ossl_quic_wire_encode_frame_stream(WPACKET *pkt, + const OSSL_QUIC_FRAME_STREAM *f); + +/* + * Encodes a QUIC MAX_DATA frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_max_data(WPACKET *pkt, + uint64_t max_data); + +/* + * Encodes a QUIC MAX_STREAM_DATA frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_max_stream_data(WPACKET *pkt, + uint64_t stream_id, + uint64_t max_data); + +/* + * Encodes a QUIC MAX_STREAMS frame to the packet writer. + * + * If is_uni is 0, the count specifies the maximum number of + * bidirectional streams; else it specifies the maximum number of unidirectional + * streams. + */ +int ossl_quic_wire_encode_frame_max_streams(WPACKET *pkt, + char is_uni, + uint64_t max_streams); + +/* + * Encodes a QUIC DATA_BLOCKED frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_data_blocked(WPACKET *pkt, + uint64_t max_data); + +/* + * Encodes a QUIC STREAM_DATA_BLOCKED frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_stream_data_blocked(WPACKET *pkt, + uint64_t stream_id, + uint64_t max_stream_data); +/* + * Encodes a QUIC STREAMS_BLOCKED frame to the packet writer. + * + * If is_uni is 0, the count specifies the maximum number of + * bidirectional streams; else it specifies the maximum number of unidirectional + * streams. + */ +int ossl_quic_wire_encode_frame_streams_blocked(WPACKET *pkt, + char is_uni, + uint64_t max_streams); + +/* + * Encodes a QUIC NEW_CONNECTION_ID frame to the packet writer, given a logical + * representation of the NEW_CONNECTION_ID frame. + * + * The buffer pointed to by the conn_id field must be valid for the duration of + * the call. + */ +int ossl_quic_wire_encode_frame_new_conn_id(WPACKET *pkt, + const OSSL_QUIC_FRAME_NEW_CONN_ID *f); + +/* + * Encodes a QUIC RETIRE_CONNECTION_ID frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_retire_conn_id(WPACKET *pkt, + uint64_t seq_num); + +/* + * Encodes a QUIC PATH_CHALLENGE frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_path_challenge(WPACKET *pkt, + uint64_t data); + +/* + * Encodes a QUIC PATH_RESPONSE frame to the packet writer. + */ +int ossl_quic_wire_encode_frame_path_response(WPACKET *pkt, + uint64_t data); + +/* + * Encodes a QUIC CONNECTION_CLOSE frame to the packet writer, given a logical + * representation of the CONNECTION_CLOSE frame. + * + * The reason field may be NULL, in which case no reason is encoded. If the + * reason field is non-NULL, it must point to a valid UTF-8 string and + * reason_len must be set to the length of the reason string in bytes. The + * reason string need not be zero terminated. + */ +int ossl_quic_wire_encode_frame_conn_close(WPACKET *pkt, + const OSSL_QUIC_FRAME_CONN_CLOSE *f); + +/* + * Encodes a QUIC HANDSHAKE_DONE frame to the packet writer. This frame type + * takes no arguiments. + */ +int ossl_quic_wire_encode_frame_handshake_done(WPACKET *pkt); + +/* + * Encodes a QUIC transport parameter TLV with the given ID into the WPACKET. + * The payload is an arbitrary buffer. + * + * If value is non-NULL, the value is copied into the packet. + * If it is NULL, value_len bytes are allocated for the payload and the caller + * should fill the buffer using the returned pointer. + * + * Returns a pointer to the start of the payload on success, or NULL on failure. + */ +unsigned char *ossl_quic_wire_encode_transport_param_bytes(WPACKET *pkt, + uint64_t id, + const unsigned char *value, + size_t value_len); + +/* + * Encodes a QUIC transport parameter TLV with the given ID into the WPACKET. + * The payload is a QUIC variable-length integer with the given value. + */ +int ossl_quic_wire_encode_transport_param_int(WPACKET *pkt, + uint64_t id, + uint64_t value); + +/* + * Encodes a QUIC transport parameter TLV with a given ID into the WPACKET. + * The payload is a QUIC connection ID. + */ +int ossl_quic_wire_encode_transport_param_cid(WPACKET *wpkt, + uint64_t id, + const QUIC_CONN_ID *cid); + +/* + * QUIC Wire Format Decoding + * ========================= + * + * These functions return 1 on success or 0 for failure. Typical reasons + * why these functions may fail include: + * + * - A frame decode function is called but the frame in the PACKET's buffer + * is not of the correct type. + * + * - A variable-length field in the encoded frame appears to exceed the bounds + * of the PACKET's buffer. + * + * These functions should be called with the PACKET pointing to the start of the + * frame (including the initial type field), and consume an entire frame + * including its type field. The expectation is that the caller will have + * already discerned the frame type using ossl_quic_wire_peek_frame_header(). + */ + +/* + * Decodes the type field header of a QUIC frame (without advancing the current + * position). This can be used to determine the frame type and determine which + * frame decoding function to call. + */ +int ossl_quic_wire_peek_frame_header(PACKET *pkt, uint64_t *type, + int *was_minimal); + +/* + * Like ossl_quic_wire_peek_frame_header, but advances the current position + * so that the type field is consumed. For advanced use only. + */ +int ossl_quic_wire_skip_frame_header(PACKET *pkt, uint64_t *type); + +/* + * Determines how many ranges are needed to decode a QUIC ACK frame. + * + * The number of ranges which must be allocated before the call to + * ossl_quic_wire_decode_frame_ack is written to *total_ranges. + * + * The PACKET is not advanced. + */ +int ossl_quic_wire_peek_frame_ack_num_ranges(const PACKET *pkt, + uint64_t *total_ranges); + +/* + * Decodes a QUIC ACK frame. The ack_ranges field of the passed structure should + * point to a preallocated array of ACK ranges and the num_ack_ranges field + * should specify the length of allocation. + * + * *total_ranges is written with the number of ranges in the decoded frame, + * which may be greater than the number of ranges which were decoded (i.e. if + * num_ack_ranges was too small to decode all ranges). + * + * On success, this function modifies the num_ack_ranges field to indicate the + * number of ranges in the decoded frame. This is the number of entries in the + * ACK ranges array written by this function; any additional entries are not + * modified. + * + * If the number of ACK ranges in the decoded frame exceeds that in + * num_ack_ranges, as many ACK ranges as possible are decoded into the range + * array. The caller can use the value written to *total_ranges to detect this + * condition, as *total_ranges will exceed num_ack_ranges. + * + * If ack is NULL, the frame is still decoded, but only *total_ranges is + * written. This can be used to determine the number of ranges which must be + * allocated. + * + * The ack_delay_exponent argument specifies the index of a power of two used to + * decode the ack_delay field. This must match the ack_delay_exponent value used + * to encode the frame. + */ +int ossl_quic_wire_decode_frame_ack(PACKET *pkt, + uint32_t ack_delay_exponent, + OSSL_QUIC_FRAME_ACK *ack, + uint64_t *total_ranges); + +/* + * Decodes a QUIC RESET_STREAM frame. + */ +int ossl_quic_wire_decode_frame_reset_stream(PACKET *pkt, + OSSL_QUIC_FRAME_RESET_STREAM *f); + +/* + * Decodes a QUIC STOP_SENDING frame. + */ +int ossl_quic_wire_decode_frame_stop_sending(PACKET *pkt, + OSSL_QUIC_FRAME_STOP_SENDING *f); + +/* + * Decodes a QUIC CRYPTO frame. + * + * f->data is set to point inside the packet buffer inside the PACKET, therefore + * it is safe to access for as long as the packet buffer exists. If nodata is + * set to 1 then reading the PACKET stops after the frame header and f->data is + * set to NULL. + */ +int ossl_quic_wire_decode_frame_crypto(PACKET *pkt, int nodata, + OSSL_QUIC_FRAME_CRYPTO *f); + +/* + * Decodes a QUIC NEW_TOKEN frame. *token is written with a pointer to the token + * bytes and *token_len is written with the length of the token in bytes. + */ +int ossl_quic_wire_decode_frame_new_token(PACKET *pkt, + const unsigned char **token, + size_t *token_len); + +/* + * Decodes a QUIC STREAM frame. + * + * If nodata is set to 1 then reading the PACKET stops after the frame header + * and f->data is set to NULL. In this case f->len will also be 0 in the event + * that "has_explicit_len" is 0. + * + * If the frame did not contain an offset field, f->offset is set to 0, as the + * absence of an offset field is equivalent to an offset of 0. + * + * If the frame contained a length field, f->has_explicit_len is set to 1 and + * the length of the data is placed in f->len. This function ensures that the + * length does not exceed the packet buffer, thus it is safe to access f->data. + * + * If the frame did not contain a length field, this means that the frame runs + * until the end of the packet. This function sets f->has_explicit_len to zero, + * and f->len to the amount of data remaining in the input buffer. Therefore, + * this function should be used with a PACKET representing a single packet (and + * not e.g. multiple packets). + * + * Note also that this means f->len is always valid after this function returns + * successfully, regardless of the value of f->has_explicit_len. + * + * f->data points inside the packet buffer inside the PACKET, therefore it is + * safe to access for as long as the packet buffer exists. + * + * f->is_fin is set according to whether the frame was marked as ending the + * stream. + */ +int ossl_quic_wire_decode_frame_stream(PACKET *pkt, int nodata, + OSSL_QUIC_FRAME_STREAM *f); + +/* + * Decodes a QUIC MAX_DATA frame. The Maximum Data field is written to + * *max_data. + */ +int ossl_quic_wire_decode_frame_max_data(PACKET *pkt, + uint64_t *max_data); + +/* + * Decodes a QUIC MAX_STREAM_DATA frame. The Stream ID is written to *stream_id + * and Maximum Stream Data field is written to *max_stream_data. + */ +int ossl_quic_wire_decode_frame_max_stream_data(PACKET *pkt, + uint64_t *stream_id, + uint64_t *max_stream_data); +/* + * Decodes a QUIC MAX_STREAMS frame. The Maximum Streams field is written to + * *max_streams. + * + * Whether the limit concerns bidirectional streams or unidirectional streams is + * denoted by the frame type; the caller should examine the frame type to + * determine this. + */ +int ossl_quic_wire_decode_frame_max_streams(PACKET *pkt, + uint64_t *max_streams); + +/* + * Decodes a QUIC DATA_BLOCKED frame. The Maximum Data field is written to + * *max_data. + */ +int ossl_quic_wire_decode_frame_data_blocked(PACKET *pkt, + uint64_t *max_data); + +/* + * Decodes a QUIC STREAM_DATA_BLOCKED frame. The Stream ID and Maximum Stream + * Data fields are written to *stream_id and *max_stream_data respectively. + */ +int ossl_quic_wire_decode_frame_stream_data_blocked(PACKET *pkt, + uint64_t *stream_id, + uint64_t *max_stream_data); + +/* + * Decodes a QUIC STREAMS_BLOCKED frame. The Maximum Streams field is written to + * *max_streams. + * + * Whether the limit concerns bidirectional streams or unidirectional streams is + * denoted by the frame type; the caller should examine the frame type to + * determine this. + */ +int ossl_quic_wire_decode_frame_streams_blocked(PACKET *pkt, + uint64_t *max_streams); + + +/* + * Decodes a QUIC NEW_CONNECTION_ID frame. The logical representation of the + * frame is written to *f. + * + * The conn_id field is set to point to the connection ID string inside the + * packet buffer; it is therefore valid for as long as the PACKET's buffer is + * valid. The conn_id_len field is set to the length of the connection ID string + * in bytes. + */ +int ossl_quic_wire_decode_frame_new_conn_id(PACKET *pkt, + OSSL_QUIC_FRAME_NEW_CONN_ID *f); + +/* + * Decodes a QUIC RETIRE_CONNECTION_ID frame. The Sequence Number field + * is written to *seq_num. + */ +int ossl_quic_wire_decode_frame_retire_conn_id(PACKET *pkt, + uint64_t *seq_num); + +/* + * Decodes a QUIC PATH_CHALLENGE frame. The Data field is written to *data. + */ +int ossl_quic_wire_decode_frame_path_challenge(PACKET *pkt, + uint64_t *data); + +/* + * Decodes a QUIC PATH_CHALLENGE frame. The Data field is written to *data. + */ +int ossl_quic_wire_decode_frame_path_response(PACKET *pkt, + uint64_t *data); + +/* + * Decodes a QUIC CONNECTION_CLOSE frame. The logical representation + * of the frame is written to *f. + * + * The reason field is set to point to the UTF-8 reason string inside + * the packet buffer; it is therefore valid for as long as the PACKET's + * buffer is valid. The reason_len field is set to the length of the + * reason string in bytes. + * + * IMPORTANT: The reason string is not zero-terminated. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_wire_decode_frame_conn_close(PACKET *pkt, + OSSL_QUIC_FRAME_CONN_CLOSE *f); + +/* + * Decodes one or more PADDING frames. PADDING frames have no arguments. + * + * Returns the number of PADDING frames decoded or 0 on error. + */ +size_t ossl_quic_wire_decode_padding(PACKET *pkt); + +/* + * Decodes a PING frame. The frame has no arguments. + */ +int ossl_quic_wire_decode_frame_ping(PACKET *pkt); + +/* + * Decodes a HANDSHAKE_DONE frame. The frame has no arguments. + */ +int ossl_quic_wire_decode_frame_handshake_done(PACKET *pkt); + +/* + * Peeks at the ID of the next QUIC transport parameter TLV in the stream. + * The ID is written to *id. + */ +int ossl_quic_wire_peek_transport_param(PACKET *pkt, uint64_t *id); + +/* + * Decodes a QUIC transport parameter TLV. A pointer to the value buffer is + * returned on success. This points inside the PACKET's buffer and is therefore + * valid as long as the PACKET's buffer is valid. + * + * The transport parameter ID is written to *id (if non-NULL) and the length of + * the payload in bytes is written to *len. + * + * Returns NULL on failure. + */ +const unsigned char *ossl_quic_wire_decode_transport_param_bytes(PACKET *pkt, + uint64_t *id, + size_t *len); + +/* + * Decodes a QUIC transport parameter TLV containing a variable-length integer. + * + * The transport parameter ID is written to *id (if non-NULL) and the value is + * written to *value. + */ +int ossl_quic_wire_decode_transport_param_int(PACKET *pkt, + uint64_t *id, + uint64_t *value); + +/* + * Decodes a QUIC transport parameter TLV containing a connection ID. + * + * The transport parameter ID is written to *id (if non-NULL) and the value is + * written to *value. + */ +int ossl_quic_wire_decode_transport_param_cid(PACKET *pkt, + uint64_t *id, + QUIC_CONN_ID *cid); + +/* + * Decodes a QUIC transport parameter TLV containing a preferred_address. + */ +typedef struct quic_preferred_addr_st { + uint16_t ipv4_port, ipv6_port; + unsigned char ipv4[4], ipv6[16]; + QUIC_STATELESS_RESET_TOKEN stateless_reset; + QUIC_CONN_ID cid; +} QUIC_PREFERRED_ADDR; + +int ossl_quic_wire_decode_transport_param_preferred_addr(PACKET *pkt, + QUIC_PREFERRED_ADDR *p); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire_pkt.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire_pkt.h new file mode 100644 index 00000000..18a483fc --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/quic_wire_pkt.h @@ -0,0 +1,629 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_QUIC_WIRE_PKT_H +# define OSSL_QUIC_WIRE_PKT_H + +# include +# include "internal/packet_quic.h" +# include "internal/quic_types.h" + +# ifndef OPENSSL_NO_QUIC + +# define QUIC_VERSION_NONE ((uint32_t)0) /* Used for version negotiation */ +# define QUIC_VERSION_1 ((uint32_t)1) /* QUIC v1 */ + +/* QUIC logical packet type. These do not match wire values. */ +# define QUIC_PKT_TYPE_INITIAL 1 +# define QUIC_PKT_TYPE_0RTT 2 +# define QUIC_PKT_TYPE_HANDSHAKE 3 +# define QUIC_PKT_TYPE_RETRY 4 +# define QUIC_PKT_TYPE_1RTT 5 +# define QUIC_PKT_TYPE_VERSION_NEG 6 + +/* + * Determine encryption level from packet type. Returns QUIC_ENC_LEVEL_NUM if + * the packet is not of a type which is encrypted. + */ +static ossl_inline ossl_unused uint32_t +ossl_quic_pkt_type_to_enc_level(uint32_t pkt_type) +{ + switch (pkt_type) { + case QUIC_PKT_TYPE_INITIAL: + return QUIC_ENC_LEVEL_INITIAL; + case QUIC_PKT_TYPE_HANDSHAKE: + return QUIC_ENC_LEVEL_HANDSHAKE; + case QUIC_PKT_TYPE_0RTT: + return QUIC_ENC_LEVEL_0RTT; + case QUIC_PKT_TYPE_1RTT: + return QUIC_ENC_LEVEL_1RTT; + default: + return QUIC_ENC_LEVEL_NUM; + } +} + +static ossl_inline ossl_unused uint32_t +ossl_quic_enc_level_to_pkt_type(uint32_t enc_level) +{ + switch (enc_level) { + case QUIC_ENC_LEVEL_INITIAL: + return QUIC_PKT_TYPE_INITIAL; + case QUIC_ENC_LEVEL_HANDSHAKE: + return QUIC_PKT_TYPE_HANDSHAKE; + case QUIC_ENC_LEVEL_0RTT: + return QUIC_PKT_TYPE_0RTT; + case QUIC_ENC_LEVEL_1RTT: + return QUIC_PKT_TYPE_1RTT; + default: + return UINT32_MAX; + } +} + +/* Determine if a packet type contains an encrypted payload. */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_is_encrypted(uint32_t pkt_type) +{ + switch (pkt_type) { + case QUIC_PKT_TYPE_RETRY: + case QUIC_PKT_TYPE_VERSION_NEG: + return 0; + default: + return 1; + } +} + +/* Determine if a packet type contains a PN field. */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_has_pn(uint32_t pkt_type) +{ + /* + * Currently a packet has a PN iff it is encrypted. This could change + * someday. + */ + return ossl_quic_pkt_type_is_encrypted(pkt_type); +} + +/* + * Determine if a packet type can appear with other packets in a datagram. Some + * packet types must be the sole packet in a datagram. + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_can_share_dgram(uint32_t pkt_type) +{ + /* + * Currently only the encrypted packet types can share a datagram. This + * could change someday. + */ + return ossl_quic_pkt_type_is_encrypted(pkt_type); +} + +/* + * Determine if the packet type must come at the end of the datagram (due to the + * lack of a length field). + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_must_be_last(uint32_t pkt_type) +{ + /* + * Any packet type which cannot share a datagram obviously must come last. + * 1-RTT also must come last as it lacks a length field. + */ + return !ossl_quic_pkt_type_can_share_dgram(pkt_type) + || pkt_type == QUIC_PKT_TYPE_1RTT; +} + +/* + * Determine if the packet type has a version field. + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_has_version(uint32_t pkt_type) +{ + return pkt_type != QUIC_PKT_TYPE_1RTT && pkt_type != QUIC_PKT_TYPE_VERSION_NEG; +} + +/* + * Determine if the packet type has a SCID field. + */ +static ossl_inline ossl_unused int +ossl_quic_pkt_type_has_scid(uint32_t pkt_type) +{ + return pkt_type != QUIC_PKT_TYPE_1RTT; +} + +/* + * Smallest possible QUIC packet size as per RFC (aside from version negotiation + * packets). + */ +# define QUIC_MIN_VALID_PKT_LEN_CRYPTO 21 +# define QUIC_MIN_VALID_PKT_LEN_VERSION_NEG 7 +# define QUIC_MIN_VALID_PKT_LEN QUIC_MIN_VALID_PKT_LEN_VERSION_NEG + +typedef struct quic_pkt_hdr_ptrs_st QUIC_PKT_HDR_PTRS; + +/* + * QUIC Packet Header Protection + * ============================= + * + * Functions to apply and remove QUIC packet header protection. A header + * protector is initialised using ossl_quic_hdr_protector_init and must be + * destroyed using ossl_quic_hdr_protector_cleanup when no longer needed. + */ +typedef struct quic_hdr_protector_st { + OSSL_LIB_CTX *libctx; + const char *propq; + EVP_CIPHER_CTX *cipher_ctx; + EVP_CIPHER *cipher; + uint32_t cipher_id; +} QUIC_HDR_PROTECTOR; + +# define QUIC_HDR_PROT_CIPHER_AES_128 1 +# define QUIC_HDR_PROT_CIPHER_AES_256 2 +# define QUIC_HDR_PROT_CIPHER_CHACHA 3 + +/* + * Initialises a header protector. + * + * cipher_id: + * The header protection cipher method to use. One of + * QUIC_HDR_PROT_CIPHER_*. Must be chosen based on negotiated TLS cipher + * suite. + * + * quic_hp_key: + * This must be the "quic hp" key derived from a traffic secret. + * + * The length of the quic_hp_key must correspond to that expected for the + * given cipher ID. + * + * The header protector performs amortisable initialisation in this function, + * therefore a header protector should be used for as long as possible. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_init(QUIC_HDR_PROTECTOR *hpr, + OSSL_LIB_CTX *libctx, + const char *propq, + uint32_t cipher_id, + const unsigned char *quic_hp_key, + size_t quic_hp_key_len); + +/* + * Destroys a header protector. This is also safe to call on a zero-initialized + * OSSL_QUIC_HDR_PROTECTOR structure which has not been initialized, or which + * has already been destroyed. + */ +void ossl_quic_hdr_protector_cleanup(QUIC_HDR_PROTECTOR *hpr); + +/* + * Removes header protection from a packet. The packet payload must currently be + * encrypted (i.e., you must remove header protection before decrypting packets + * received). The function examines the header buffer to determine which bytes + * of the header need to be decrypted. + * + * If this function fails, no data is modified. + * + * This is implemented as a call to ossl_quic_hdr_protector_decrypt_fields(). + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_decrypt(QUIC_HDR_PROTECTOR *hpr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Applies header protection to a packet. The packet payload must already have + * been encrypted (i.e., you must apply header protection after encrypting + * a packet). The function examines the header buffer to determine which bytes + * of the header need to be encrypted. + * + * This is implemented as a call to ossl_quic_hdr_protector_encrypt_fields(). + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_encrypt(QUIC_HDR_PROTECTOR *hpr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Removes header protection from a packet. The packet payload must currently + * be encrypted. This is a low-level function which assumes you have already + * determined which parts of the packet header need to be decrypted. + * + * sample: + * The range of bytes in the packet to be used to generate the header + * protection mask. It is permissible to set sample_len to the size of the + * remainder of the packet; this function will only use as many bytes as + * needed. If not enough sample bytes are provided, this function fails. + * + * first_byte: + * The first byte of the QUIC packet header to be decrypted. + * + * pn: + * Pointer to the start of the PN field. The caller is responsible + * for ensuring at least four bytes follow this pointer. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_hdr_protector_decrypt_fields(QUIC_HDR_PROTECTOR *hpr, + const unsigned char *sample, + size_t sample_len, + unsigned char *first_byte, + unsigned char *pn_bytes); + +/* + * Works analogously to ossl_hdr_protector_decrypt_fields, but applies header + * protection instead of removing it. + */ +int ossl_quic_hdr_protector_encrypt_fields(QUIC_HDR_PROTECTOR *hpr, + const unsigned char *sample, + size_t sample_len, + unsigned char *first_byte, + unsigned char *pn_bytes); + +/* + * QUIC Packet Header + * ================== + * + * This structure provides a logical representation of a QUIC packet header. + * + * QUIC packet formats fall into the following categories: + * + * Long Packets, which is subdivided into five possible packet types: + * Version Negotiation (a special case); + * Initial; + * 0-RTT; + * Handshake; and + * Retry + * + * Short Packets, which comprises only a single packet type (1-RTT). + * + * The packet formats vary and common fields are found in some packets but + * not others. The below table indicates which fields are present in which + * kinds of packet. * indicates header protection is applied. + * + * SLLLLL Legend: 1=1-RTT, i=Initial, 0=0-RTT, h=Handshake + * 1i0hrv r=Retry, v=Version Negotiation + * ------ + * 1i0hrv Header Form (0=Short, 1=Long) + * 1i0hr Fixed Bit (always 1) + * 1 Spin Bit + * 1 * Reserved Bits + * 1 * Key Phase + * 1i0h * Packet Number Length + * i0hr? Long Packet Type + * i0h Type-Specific Bits + * i0hr Version (note: always 0 for Version Negotiation packets) + * 1i0hrv Destination Connection ID + * i0hrv Source Connection ID + * 1i0h * Packet Number + * i Token + * i0h Length + * r Retry Token + * r Retry Integrity Tag + * + * For each field below, the conditions under which the field is valid are + * specified. If a field is not currently valid, it is initialized to a zero or + * NULL value. + */ +typedef struct quic_pkt_hdr_st { + /* [ALL] A QUIC_PKT_TYPE_* value. Always valid. */ + unsigned int type :8; + + /* [S] Value of the spin bit. Valid if (type == 1RTT). */ + unsigned int spin_bit :1; + + /* + * [S] Value of the Key Phase bit in the short packet. + * Valid if (type == 1RTT && !partial). + */ + unsigned int key_phase :1; + + /* + * [1i0h] Length of packet number in bytes. This is the decoded value. + * Valid if ((type == 1RTT || (version && type != RETRY)) && !partial). + */ + unsigned int pn_len :4; + + /* + * [ALL] Set to 1 if this is a partial decode because the packet header + * has not yet been deprotected. pn_len, pn and key_phase are not valid if + * this is set. + */ + unsigned int partial :1; + + /* + * [ALL] Whether the fixed bit was set. Note that only Version Negotiation + * packets are allowed to have this unset, so this will always be 1 for all + * other packet types (decode will fail if it is not set). Ignored when + * encoding unless encoding a Version Negotiation packet. + */ + unsigned int fixed :1; + + /* + * The unused bits in the low 4 bits of a Retry packet header's first byte. + * This is used to ensure that Retry packets have the same bit-for-bit + * representation in their header when decoding and encoding them again. + * This is necessary to validate Retry packet headers. + */ + unsigned int unused :4; + + /* + * The 'Reserved' bits in an Initial, Handshake, 0-RTT or 1-RTT packet + * header's first byte. These are provided so that the caller can validate + * that they are zero, as this must be done after packet protection is + * successfully removed to avoid creating a timing channel. + */ + unsigned int reserved :2; + + /* [L] Version field. Valid if (type != 1RTT). */ + uint32_t version; + + /* [ALL] The destination connection ID. Always valid. */ + QUIC_CONN_ID dst_conn_id; + + /* + * [L] The source connection ID. + * Valid if (type != 1RTT). + */ + QUIC_CONN_ID src_conn_id; + + /* + * [1i0h] Relatively-encoded packet number in raw, encoded form. The correct + * decoding of this value is context-dependent. The number of bytes valid in + * this buffer is determined by pn_len above. If the decode was partial, + * this field is not valid. + * + * Valid if ((type == 1RTT || (version && type != RETRY)) && !partial). + */ + unsigned char pn[4]; + + /* + * [i] Token field in Initial packet. Points to memory inside the decoded + * PACKET, and therefore is valid for as long as the PACKET's buffer is + * valid. token_len is the length of the token in bytes. + * + * Valid if (type == INITIAL). + */ + const unsigned char *token; + size_t token_len; + + /* + * [ALL] Payload length in bytes. + * + * Though 1-RTT, Retry and Version Negotiation packets do not contain an + * explicit length field, this field is always valid and is used by the + * packet header encoding and decoding routines to describe the payload + * length, regardless of whether the packet type encoded or decoded uses an + * explicit length indication. + */ + size_t len; + + /* + * Pointer to start of payload data in the packet. Points to memory inside + * the decoded PACKET, and therefore is valid for as long as the PACKET'S + * buffer is valid. The length of the buffer in bytes is in len above. + * + * For Version Negotiation packets, points to the array of supported + * versions. + * + * For Retry packets, points to the Retry packet payload, which comprises + * the Retry Token followed by a 16-byte Retry Integrity Tag. + * + * Regardless of whether a packet is a Version Negotiation packet (where the + * payload contains a list of supported versions), a Retry packet (where the + * payload contains a Retry Token and Retry Integrity Tag), or any other + * packet type (where the payload contains frames), the payload is not + * validated and the user must parse the payload bearing this in mind. + * + * If the decode was partial (partial is set), this points to the start of + * the packet number field, rather than the protected payload, as the length + * of the packet number field is unknown. The len field reflects this in + * this case (i.e., the len field is the number of payload bytes plus the + * number of bytes comprising the PN). + */ + const unsigned char *data; +} QUIC_PKT_HDR; + +/* + * Extra information which can be output by the packet header decode functions + * for the assistance of the header protector. This avoids the header protector + * needing to partially re-decode the packet header. + */ +struct quic_pkt_hdr_ptrs_st { + unsigned char *raw_start; /* start of packet */ + unsigned char *raw_sample; /* start of sampling range */ + size_t raw_sample_len; /* maximum length of sampling range */ + + /* + * Start of PN field. Guaranteed to be NULL unless at least four bytes are + * available via this pointer. + */ + unsigned char *raw_pn; +}; + +/* + * If partial is 1, reads the unprotected parts of a protected packet header + * from a PACKET, performing a partial decode. + * + * If partial is 0, the input is assumed to have already had header protection + * removed, and all header fields are decoded. + * + * If nodata is 1, the input is assumed to have no payload data in it. Otherwise + * payload data must be present. + * + * On success, the logical decode of the packet header is written to *hdr. + * hdr->partial is set or cleared according to whether a partial decode was + * performed. *ptrs is filled with pointers to various parts of the packet + * buffer. + * + * In order to decode short packets, the connection ID length being used must be + * known contextually, and should be passed as short_conn_id_len. If + * short_conn_id_len is set to an invalid value (a value greater than + * QUIC_MAX_CONN_ID_LEN), this function fails when trying to decode a short + * packet, but succeeds for long packets. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_decode_pkt_hdr(PACKET *pkt, + size_t short_conn_id_len, + int partial, + int nodata, + QUIC_PKT_HDR *hdr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Encodes a packet header. The packet is written to pkt. + * + * The length of the (encrypted) packet payload should be written to hdr->len + * and will be placed in the serialized packet header. The payload data itself + * is not copied; the caller should write hdr->len bytes of encrypted payload to + * the WPACKET immediately after the call to this function. However, + * WPACKET_reserve_bytes is called for the payload size. + * + * This function does not apply header protection. You must apply header + * protection yourself after calling this function. *ptrs is filled with + * pointers which can be passed to a header protector, but this must be + * performed after the encrypted payload is written. + * + * The pointers in *ptrs are direct pointers into the WPACKET buffer. If more + * data is written to the WPACKET buffer, WPACKET buffer reallocations may + * occur, causing these pointers to become invalid. Therefore, you must not call + * any write WPACKET function between this call and the call to + * ossl_quic_hdr_protector_encrypt. This function calls WPACKET_reserve_bytes + * for the payload length, so you may assume hdr->len bytes are already free to + * write at the WPACKET cursor location once this function returns successfully. + * It is recommended that you call this function, write the encrypted payload, + * call ossl_quic_hdr_protector_encrypt, and then call + * WPACKET_allocate_bytes(hdr->len). + * + * Version Negotiation and Retry packets do not use header protection; for these + * header types, the fields in *ptrs are all written as zero. Version + * Negotiation, Retry and 1-RTT packets do not contain a Length field, but + * hdr->len bytes of data are still reserved in the WPACKET. + * + * If serializing a short packet and short_conn_id_len does not match the DCID + * specified in hdr, the function fails. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_encode_pkt_hdr(WPACKET *pkt, + size_t short_conn_id_len, + const QUIC_PKT_HDR *hdr, + QUIC_PKT_HDR_PTRS *ptrs); + +/* + * Retrieves only the DCID from a packet header. This is intended for demuxer + * use. It avoids the need to parse the rest of the packet header twice. + * + * Information on packet length is not decoded, as this only needs to be used on + * the first packet in a datagram, therefore this takes a buffer and not a + * PACKET. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_get_pkt_hdr_dst_conn_id(const unsigned char *buf, + size_t buf_len, + size_t short_conn_id_len, + QUIC_CONN_ID *dst_conn_id); + +/* + * Precisely predicts the encoded length of a packet header structure. + * + * May return 0 if the packet header is not valid, but the fact that this + * function returns non-zero does not guarantee that + * ossl_quic_wire_encode_pkt_hdr() will succeed. + */ +int ossl_quic_wire_get_encoded_pkt_hdr_len(size_t short_conn_id_len, + const QUIC_PKT_HDR *hdr); + +/* + * Packet Number Encoding + * ====================== + */ + +/* + * Decode an encoded packet header QUIC PN. + * + * enc_pn is the raw encoded PN to decode. enc_pn_len is its length in bytes as + * indicated by packet headers. largest_pn is the largest PN successfully + * processed in the relevant PN space. + * + * The resulting PN is written to *res_pn. + * + * Returns 1 on success or 0 on failure. + */ +int ossl_quic_wire_decode_pkt_hdr_pn(const unsigned char *enc_pn, + size_t enc_pn_len, + QUIC_PN largest_pn, + QUIC_PN *res_pn); + +/* + * Determine how many bytes should be used to encode a PN. Returns the number of + * bytes (which will be in range [1, 4]). + */ +int ossl_quic_wire_determine_pn_len(QUIC_PN pn, QUIC_PN largest_acked); + +/* + * Encode a PN for a packet header using the specified number of bytes, which + * should have been determined by calling ossl_quic_wire_determine_pn_len. The + * PN encoding process is done in two parts to allow the caller to override PN + * encoding length if it wishes. + * + * Returns 1 on success and 0 on failure. + */ +int ossl_quic_wire_encode_pkt_hdr_pn(QUIC_PN pn, + unsigned char *enc_pn, + size_t enc_pn_len); + +/* + * Retry Integrity Tags + * ==================== + */ + +# define QUIC_RETRY_INTEGRITY_TAG_LEN 16 + +/* + * Validate a retry integrity tag. Returns 1 if the tag is valid. + * + * Must be called on a hdr with a type of QUIC_PKT_TYPE_RETRY with a valid data + * pointer. + * + * client_initial_dcid must be the original DCID used by the client in its first + * Initial packet, as this is used to calculate the Retry Integrity Tag. + * + * Returns 0 if the tag is invalid, if called on any other type of packet or if + * the body is too short. + */ +int ossl_quic_validate_retry_integrity_tag(OSSL_LIB_CTX *libctx, + const char *propq, + const QUIC_PKT_HDR *hdr, + const QUIC_CONN_ID *client_initial_dcid); + +/* + * Calculates a retry integrity tag. Returns 0 on error, for example if hdr does + * not have a type of QUIC_PKT_TYPE_RETRY. + * + * client_initial_dcid must be the original DCID used by the client in its first + * Initial packet, as this is used to calculate the Retry Integrity Tag. + * + * tag must point to a buffer of QUIC_RETRY_INTEGRITY_TAG_LEN bytes in size. + * + * Note that hdr->data must point to the Retry packet body, and hdr->len must + * include the space for the Retry Integrity Tag. (This means that you can + * easily fill in a tag in a Retry packet you are generating by calling this + * function and passing (hdr->data + hdr->len - QUIC_RETRY_INTEGRITY_TAG_LEN) as + * the tag argument.) This function fails if hdr->len is too short to contain a + * Retry Integrity Tag. + */ +int ossl_quic_calculate_retry_integrity_tag(OSSL_LIB_CTX *libctx, + const char *propq, + const QUIC_PKT_HDR *hdr, + const QUIC_CONN_ID *client_initial_dcid, + unsigned char *tag); + +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/recordmethod.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/recordmethod.h new file mode 100644 index 00000000..53bd4ca6 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/recordmethod.h @@ -0,0 +1,339 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_RECORDMETHOD_H +# define OSSL_INTERNAL_RECORDMETHOD_H +# pragma once + +# include + +/* + * We use the term "record" here to refer to a packet of data. Records are + * typically protected via a cipher and MAC, or an AEAD cipher (although not + * always). This usage of the term record is consistent with the TLS concept. + * In QUIC the term "record" is not used but it is analogous to the QUIC term + * "packet". The interface in this file applies to all protocols that protect + * records/packets of data, i.e. (D)TLS and QUIC. The term record is used to + * refer to both contexts. + */ + +/* + * An OSSL_RECORD_METHOD is a protocol specific method which provides the + * functions for reading and writing records for that protocol. Which + * OSSL_RECORD_METHOD to use for a given protocol is defined by the SSL_METHOD. + */ +typedef struct ossl_record_method_st OSSL_RECORD_METHOD; + +/* + * An OSSL_RECORD_LAYER is just an externally defined opaque pointer created by + * the method + */ +typedef struct ossl_record_layer_st OSSL_RECORD_LAYER; + + +# define OSSL_RECORD_ROLE_CLIENT 0 +# define OSSL_RECORD_ROLE_SERVER 1 + +# define OSSL_RECORD_DIRECTION_READ 0 +# define OSSL_RECORD_DIRECTION_WRITE 1 + +/* + * Protection level. For <= TLSv1.2 only "NONE" and "APPLICATION" are used. + */ +# define OSSL_RECORD_PROTECTION_LEVEL_NONE 0 +# define OSSL_RECORD_PROTECTION_LEVEL_EARLY 1 +# define OSSL_RECORD_PROTECTION_LEVEL_HANDSHAKE 2 +# define OSSL_RECORD_PROTECTION_LEVEL_APPLICATION 3 + +# define OSSL_RECORD_RETURN_SUCCESS 1 +# define OSSL_RECORD_RETURN_RETRY 0 +# define OSSL_RECORD_RETURN_NON_FATAL_ERR -1 +# define OSSL_RECORD_RETURN_FATAL -2 +# define OSSL_RECORD_RETURN_EOF -3 + +/* + * Template for creating a record. A record consists of the |type| of data it + * will contain (e.g. alert, handshake, application data, etc) along with a + * buffer of payload data in |buf| of length |buflen|. + */ +struct ossl_record_template_st { + unsigned char type; + unsigned int version; + const unsigned char *buf; + size_t buflen; +}; + +typedef struct ossl_record_template_st OSSL_RECORD_TEMPLATE; + +/* + * Rather than a "method" approach, we could make this fetchable - Should we? + * There could be some complexity in finding suitable record layer implementations + * e.g. we need to find one that matches the negotiated protocol, cipher, + * extensions, etc. The selection_cb approach given above doesn't work so well + * if unknown third party providers with OSSL_RECORD_METHOD implementations are + * loaded. + */ + +/* + * If this becomes public API then we will need functions to create and + * free an OSSL_RECORD_METHOD, as well as functions to get/set the various + * function pointers....unless we make it fetchable. + */ +struct ossl_record_method_st { + /* + * Create a new OSSL_RECORD_LAYER object for handling the protocol version + * set by |vers|. |role| is 0 for client and 1 for server. |direction| + * indicates either read or write. |level| is the protection level as + * described above. |settings| are mandatory settings that will cause the + * new() call to fail if they are not understood (for example to require + * Encrypt-Then-Mac support). |options| are optional settings that will not + * cause the new() call to fail if they are not understood (for example + * whether to use "read ahead" or not). + * + * The BIO in |transport| is the BIO for the underlying transport layer. + * Where the direction is "read", then this BIO will only ever be used for + * reading data. Where the direction is "write", then this BIO will only + * every be used for writing data. + * + * An SSL object will always have at least 2 OSSL_RECORD_LAYER objects in + * force at any one time (one for reading and one for writing). In some + * protocols more than 2 might be used (e.g. in DTLS for retransmitting + * messages from an earlier epoch). + * + * The created OSSL_RECORD_LAYER object is stored in *ret on success (or + * NULL otherwise). The return value will be one of + * OSSL_RECORD_RETURN_SUCCESS, OSSL_RECORD_RETURN_FATAL or + * OSSL_RECORD_RETURN_NON_FATAL. A non-fatal return means that creation of + * the record layer has failed because it is unsuitable, but an alternative + * record layer can be tried instead. + */ + + /* + * If we eventually make this fetchable then we will need to use something + * other than EVP_CIPHER. Also mactype would not be a NID, but a string. For + * now though, this works. + */ + int (*new_record_layer)(OSSL_LIB_CTX *libctx, + const char *propq, int vers, + int role, int direction, + int level, + uint16_t epoch, + unsigned char *secret, + size_t secretlen, + unsigned char *key, + size_t keylen, + unsigned char *iv, + size_t ivlen, + unsigned char *mackey, + size_t mackeylen, + const EVP_CIPHER *ciph, + size_t taglen, + int mactype, + const EVP_MD *md, + COMP_METHOD *comp, + const EVP_MD *kdfdigest, + BIO *prev, + BIO *transport, + BIO *next, + BIO_ADDR *local, + BIO_ADDR *peer, + const OSSL_PARAM *settings, + const OSSL_PARAM *options, + const OSSL_DISPATCH *fns, + void *cbarg, + void *rlarg, + OSSL_RECORD_LAYER **ret); + int (*free)(OSSL_RECORD_LAYER *rl); + + /* Returns 1 if we have unprocessed data buffered or 0 otherwise */ + int (*unprocessed_read_pending)(OSSL_RECORD_LAYER *rl); + + /* + * Returns 1 if we have processed data buffered that can be read or 0 otherwise + * - not necessarily app data + */ + int (*processed_read_pending)(OSSL_RECORD_LAYER *rl); + + /* + * The amount of processed app data that is internally buffered and + * available to read + */ + size_t (*app_data_pending)(OSSL_RECORD_LAYER *rl); + + /* + * Find out the maximum number of records that the record layer is prepared + * to process in a single call to write_records. It is the caller's + * responsibility to ensure that no call to write_records exceeds this + * number of records. |type| is the type of the records that the caller + * wants to write, and |len| is the total amount of data that it wants + * to send. |maxfrag| is the maximum allowed fragment size based on user + * configuration, or TLS parameter negotiation. |*preffrag| contains on + * entry the default fragment size that will actually be used based on user + * configuration. This will always be less than or equal to |maxfrag|. On + * exit the record layer may update this to an alternative fragment size to + * be used. This must always be less than or equal to |maxfrag|. + */ + size_t (*get_max_records)(OSSL_RECORD_LAYER *rl, uint8_t type, size_t len, + size_t maxfrag, size_t *preffrag); + + /* + * Write |numtempl| records from the array of record templates pointed to + * by |templates|. Each record should be no longer than the value returned + * by get_max_record_len(), and there should be no more records than the + * value returned by get_max_records(). + * Where possible the caller will attempt to ensure that all records are the + * same length, except the last record. This may not always be possible so + * the record method implementation should not rely on this being the case. + * In the event of a retry the caller should call retry_write_records() + * to try again. No more calls to write_records() should be attempted until + * retry_write_records() returns success. + * Buffers allocated for the record templates can be freed immediately after + * write_records() returns - even in the case a retry. + * The record templates represent the plaintext payload. The encrypted + * output is written to the |transport| BIO. + * Returns: + * 1 on success + * 0 on retry + * -1 on failure + */ + int (*write_records)(OSSL_RECORD_LAYER *rl, OSSL_RECORD_TEMPLATE *templates, + size_t numtempl); + + /* + * Retry a previous call to write_records. The caller should continue to + * call this until the function returns with success or failure. After + * each retry more of the data may have been incrementally sent. + * Returns: + * 1 on success + * 0 on retry + * -1 on failure + */ + int (*retry_write_records)(OSSL_RECORD_LAYER *rl); + + /* + * Read a record and return the record layer version and record type in + * the |rversion| and |type| parameters. |*data| is set to point to a + * record layer buffer containing the record payload data and |*datalen| + * is filled in with the length of that data. The |epoch| and |seq_num| + * values are only used if DTLS has been negotiated. In that case they are + * filled in with the epoch and sequence number from the record. + * An opaque record layer handle for the record is returned in |*rechandle| + * which is used in a subsequent call to |release_record|. The buffer must + * remain available until all the bytes from record are released via one or + * more release_record calls. + * + * Internally the OSSL_RECORD_METHOD implementation may read/process + * multiple records in one go and buffer them. + */ + int (*read_record)(OSSL_RECORD_LAYER *rl, void **rechandle, int *rversion, + uint8_t *type, const unsigned char **data, size_t *datalen, + uint16_t *epoch, unsigned char *seq_num); + /* + * Release length bytes from a buffer associated with a record previously + * read with read_record. Once all the bytes from a record are released, the + * whole record and its associated buffer is released. Records are + * guaranteed to be released in the order that they are read. + */ + int (*release_record)(OSSL_RECORD_LAYER *rl, void *rechandle, size_t length); + + /* + * In the event that a fatal error is returned from the functions above then + * get_alert_code() can be called to obtain a more details identifier for + * the error. In (D)TLS this is the alert description code. + */ + int (*get_alert_code)(OSSL_RECORD_LAYER *rl); + + /* + * Update the transport BIO from the one originally set in the + * new_record_layer call + */ + int (*set1_bio)(OSSL_RECORD_LAYER *rl, BIO *bio); + + /* Called when protocol negotiation selects a protocol version to use */ + int (*set_protocol_version)(OSSL_RECORD_LAYER *rl, int version); + + /* + * Whether we are allowed to receive unencrypted alerts, even if we might + * otherwise expect encrypted records. Ignored by protocol versions where + * this isn't relevant + */ + void (*set_plain_alerts)(OSSL_RECORD_LAYER *rl, int allow); + + /* + * Called immediately after creation of the record layer if we are in a + * first handshake. Also called at the end of the first handshake + */ + void (*set_first_handshake)(OSSL_RECORD_LAYER *rl, int first); + + /* + * Set the maximum number of pipelines that the record layer should process. + * The default is 1. + */ + void (*set_max_pipelines)(OSSL_RECORD_LAYER *rl, size_t max_pipelines); + + /* + * Called to tell the record layer whether we are currently "in init" or + * not. Default at creation of the record layer is "yes". + */ + void (*set_in_init)(OSSL_RECORD_LAYER *rl, int in_init); + + /* + * Get a short or long human readable description of the record layer state + */ + void (*get_state)(OSSL_RECORD_LAYER *rl, const char **shortstr, + const char **longstr); + + /* + * Set new options or modify ones that were originally specified in the + * new_record_layer call. + */ + int (*set_options)(OSSL_RECORD_LAYER *rl, const OSSL_PARAM *options); + + const COMP_METHOD *(*get_compression)(OSSL_RECORD_LAYER *rl); + + /* + * Set the maximum fragment length to be used for the record layer. This + * will override any previous value supplied for the "max_frag_len" + * setting during construction of the record layer. + */ + void (*set_max_frag_len)(OSSL_RECORD_LAYER *rl, size_t max_frag_len); + + /* + * The maximum expansion in bytes that the record layer might add while + * writing a record + */ + size_t (*get_max_record_overhead)(OSSL_RECORD_LAYER *rl); + + /* + * Increment the record sequence number + */ + int (*increment_sequence_ctr)(OSSL_RECORD_LAYER *rl); + + /* + * Allocate read or write buffers. Does nothing if already allocated. + * Assumes default buffer length and 1 pipeline. + */ + int (*alloc_buffers)(OSSL_RECORD_LAYER *rl); + + /* + * Free read or write buffers. Fails if there is pending read or write + * data. Buffers are automatically reallocated on next read/write. + */ + int (*free_buffers)(OSSL_RECORD_LAYER *rl); +}; + + +/* Standard built-in record methods */ +extern const OSSL_RECORD_METHOD ossl_tls_record_method; +# ifndef OPENSSL_NO_KTLS +extern const OSSL_RECORD_METHOD ossl_ktls_record_method; +# endif +extern const OSSL_RECORD_METHOD ossl_dtls_record_method; + +#endif /* !defined(OSSL_INTERNAL_RECORDMETHOD_H) */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/refcount.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/refcount.h index 3392d3b4..4c9ab266 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/refcount.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/refcount.h @@ -12,6 +12,7 @@ # include # include +# include # if defined(OPENSSL_THREADS) && !defined(OPENSSL_DEV_NO_ATOMICS) # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ @@ -25,12 +26,13 @@ # define HAVE_ATOMICS 1 -typedef _Atomic int CRYPTO_REF_COUNT; +typedef struct { + _Atomic int val; +} CRYPTO_REF_COUNT; -static inline int CRYPTO_UP_REF(_Atomic int *val, int *ret, - ossl_unused void *lock) +static inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = atomic_fetch_add_explicit(val, 1, memory_order_relaxed) + 1; + *ret = atomic_fetch_add_explicit(&refcnt->val, 1, memory_order_relaxed) + 1; return 1; } @@ -44,50 +46,70 @@ static inline int CRYPTO_UP_REF(_Atomic int *val, int *ret, * to mutable members doesn't have to be serialized anymore, which would * otherwise imply an acquire fence. Hence conditional acquire fence... */ -static inline int CRYPTO_DOWN_REF(_Atomic int *val, int *ret, - ossl_unused void *lock) +static inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = atomic_fetch_sub_explicit(val, 1, memory_order_relaxed) - 1; + *ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_relaxed) - 1; if (*ret == 0) atomic_thread_fence(memory_order_acquire); return 1; } +static inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = atomic_load_explicit(&refcnt->val, memory_order_relaxed); + return 1; +} + # elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) && __GCC_ATOMIC_INT_LOCK_FREE > 0 # define HAVE_ATOMICS 1 -typedef int CRYPTO_REF_COUNT; +typedef struct { + int val; +} CRYPTO_REF_COUNT; -static __inline__ int CRYPTO_UP_REF(int *val, int *ret, ossl_unused void *lock) +static __inline__ int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = __atomic_fetch_add(val, 1, __ATOMIC_RELAXED) + 1; + *ret = __atomic_fetch_add(&refcnt->val, 1, __ATOMIC_RELAXED) + 1; return 1; } -static __inline__ int CRYPTO_DOWN_REF(int *val, int *ret, - ossl_unused void *lock) +static __inline__ int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = __atomic_fetch_sub(val, 1, __ATOMIC_RELAXED) - 1; + *ret = __atomic_fetch_sub(&refcnt->val, 1, __ATOMIC_RELAXED) - 1; if (*ret == 0) __atomic_thread_fence(__ATOMIC_ACQUIRE); return 1; } -# elif defined(__ICL) && defined(_WIN32) -# define HAVE_ATOMICS 1 -typedef volatile int CRYPTO_REF_COUNT; -static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline__ int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd((void *)val, 1) + 1; + *ret = __atomic_load_n(&refcnt->val, __ATOMIC_RELAXED); return 1; } -static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, - ossl_unused void *lock) +# elif defined(__ICL) && defined(_WIN32) +# define HAVE_ATOMICS 1 + +typedef struct { + volatile int val; +} CRYPTO_REF_COUNT; + +static __inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd((void *)val, -1) - 1; + *ret = _InterlockedExchangeAdd((void *)&refcnt->val, 1) + 1; + return 1; +} + +static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *val, int *refcnt) +{ + *ret = _InterlockedExchangeAdd((void *)&refcnt->val, -1) - 1; + return 1; +} + +static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = _InterlockedOr((void *)&refcnt->val, 0); return 1; } @@ -95,7 +117,9 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, # define HAVE_ATOMICS 1 -typedef volatile int CRYPTO_REF_COUNT; +typedef struct { + volatile int val; +} CRYPTO_REF_COUNT; # if (defined(_M_ARM) && _M_ARM>=7 && !defined(_WIN32_WCE)) || defined(_M_ARM64) # include @@ -103,21 +127,26 @@ typedef volatile int CRYPTO_REF_COUNT; # define _ARM_BARRIER_ISH _ARM64_BARRIER_ISH # endif -static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd_nf(val, 1) + 1; + *ret = _InterlockedExchangeAdd_nf(&refcnt->val, 1) + 1; return 1; } -static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd_nf(val, -1) - 1; + *ret = _InterlockedExchangeAdd_nf(&refcnt->val, -1) - 1; if (*ret == 0) __dmb(_ARM_BARRIER_ISH); return 1; } + +static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = _InterlockedOr_nf((void *)&refcnt->val, 0); + return 1; +} + # else # if !defined(_WIN32_WCE) # pragma intrinsic(_InterlockedExchangeAdd) @@ -131,19 +160,24 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, # endif # endif -static __inline int CRYPTO_UP_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd(val, 1) + 1; + *ret = _InterlockedExchangeAdd(&refcnt->val, 1) + 1; return 1; } -static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, - ossl_unused void *lock) +static __inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, int *ret) { - *ret = _InterlockedExchangeAdd(val, -1) - 1; + *ret = _InterlockedExchangeAdd(&refcnt->val, -1) - 1; return 1; } + +static __inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, int *ret) +{ + *ret = _InterlockedExchangeAdd(&refcnt->val, 0); + return 1; +} + # endif # endif @@ -156,13 +190,92 @@ static __inline int CRYPTO_DOWN_REF(volatile int *val, int *ret, */ # ifndef HAVE_ATOMICS -typedef int CRYPTO_REF_COUNT; +typedef struct { + int val; +# ifdef OPENSSL_THREADS + CRYPTO_RWLOCK *lock; +# endif +} CRYPTO_REF_COUNT; -# define CRYPTO_UP_REF(val, ret, lock) CRYPTO_atomic_add(val, 1, ret, lock) -# define CRYPTO_DOWN_REF(val, ret, lock) CRYPTO_atomic_add(val, -1, ret, lock) +# ifdef OPENSSL_THREADS +static ossl_unused ossl_inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + return CRYPTO_atomic_add(&refcnt->val, 1, ret, refcnt->lock); +} + +static ossl_unused ossl_inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + return CRYPTO_atomic_add(&refcnt->val, -1, ret, refcnt->lock); +} + +static ossl_unused ossl_inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + return CRYPTO_atomic_load_int(&refcnt->val, ret, refcnt->lock); +} + +# define CRYPTO_NEW_FREE_DEFINED 1 +static ossl_unused ossl_inline int CRYPTO_NEW_REF(CRYPTO_REF_COUNT *refcnt, int n) +{ + refcnt->val = n; + refcnt->lock = CRYPTO_THREAD_lock_new(); + if (refcnt->lock == NULL) { + ERR_raise(ERR_LIB_CRYPTO, ERR_R_CRYPTO_LIB); + return 0; + } + return 1; +} + +static ossl_unused ossl_inline void CRYPTO_FREE_REF(CRYPTO_REF_COUNT *refcnt) \ +{ + if (refcnt != NULL) + CRYPTO_THREAD_lock_free(refcnt->lock); +} + +# else /* OPENSSL_THREADS */ + +static ossl_unused ossl_inline int CRYPTO_UP_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + refcnt->val++; + *ret = refcnt->val; + return 1; +} + +static ossl_unused ossl_inline int CRYPTO_DOWN_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + refcnt->val--; + *ret = refcnt->val; + return 1; +} + +static ossl_unused ossl_inline int CRYPTO_GET_REF(CRYPTO_REF_COUNT *refcnt, + int *ret) +{ + *ret = refcnt->val; + return 1; +} + +# endif /* OPENSSL_THREADS */ # endif +# ifndef CRYPTO_NEW_FREE_DEFINED +static ossl_unused ossl_inline int CRYPTO_NEW_REF(CRYPTO_REF_COUNT *refcnt, int n) +{ + refcnt->val = n; + return 1; +} + +static ossl_unused ossl_inline void CRYPTO_FREE_REF(CRYPTO_REF_COUNT *refcnt) \ +{ +} +# endif /* CRYPTO_NEW_FREE_DEFINED */ +#undef CRYPTO_NEW_FREE_DEFINED + # if !defined(NDEBUG) && !defined(OPENSSL_NO_STDIO) # define REF_ASSERT_ISNT(test) \ (void)((test) ? (OPENSSL_die("refcount error", __FILE__, __LINE__), 1) : 0) @@ -173,6 +286,6 @@ typedef int CRYPTO_REF_COUNT; # define REF_PRINT_EX(text, count, object) \ OSSL_TRACE3(REF_COUNT, "%p:%4d:%s\n", (object), (count), (text)); # define REF_PRINT_COUNT(text, object) \ - REF_PRINT_EX(text, object->references, (void *)object) + REF_PRINT_EX(text, object->references.val, (void *)object) #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ring_buf.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ring_buf.h new file mode 100644 index 00000000..436f1ca1 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ring_buf.h @@ -0,0 +1,277 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_RING_BUF_H +# define OSSL_INTERNAL_RING_BUF_H +# pragma once + +# include /* For 'ossl_inline' */ +# include "internal/safe_math.h" + +/* + * ================================================================== + * Byte-wise ring buffer which supports pushing and popping blocks of multiple + * bytes at a time. The logical offset of each byte for the purposes of a QUIC + * stream is tracked. Bytes can be popped from the ring buffer in two stages; + * first they are popped, and then they are culled. Bytes which have been popped + * but not yet culled will not be overwritten, and can be restored. + */ +struct ring_buf { + void *start; + size_t alloc; /* size of buffer allocation in bytes */ + + /* + * Logical offset of the head (where we append to). This is the current size + * of the QUIC stream. This increases monotonically. + */ + uint64_t head_offset; + + /* + * Logical offset of the cull tail. Data is no longer needed and is + * deallocated as the cull tail advances, which occurs as data is + * acknowledged. This increases monotonically. + */ + uint64_t ctail_offset; +}; + +OSSL_SAFE_MATH_UNSIGNED(u64, uint64_t) + +#define MAX_OFFSET (((uint64_t)1) << 62) /* QUIC-imposed limit */ + +static ossl_inline int ring_buf_init(struct ring_buf *r) +{ + r->start = NULL; + r->alloc = 0; + r->head_offset = r->ctail_offset = 0; + return 1; +} + +static ossl_inline void ring_buf_destroy(struct ring_buf *r, int cleanse) +{ + if (cleanse) + OPENSSL_clear_free(r->start, r->alloc); + else + OPENSSL_free(r->start); + r->start = NULL; + r->alloc = 0; +} + +static ossl_inline size_t ring_buf_used(struct ring_buf *r) +{ + return (size_t)(r->head_offset - r->ctail_offset); +} + +static ossl_inline size_t ring_buf_avail(struct ring_buf *r) +{ + return r->alloc - ring_buf_used(r); +} + +static ossl_inline int ring_buf_write_at(struct ring_buf *r, + uint64_t logical_offset, + const unsigned char *buf, + size_t buf_len) +{ + size_t avail, idx, l; + unsigned char *start = r->start; + int i, err = 0; + + avail = ring_buf_avail(r); + if (logical_offset < r->ctail_offset + || safe_add_u64(logical_offset, buf_len, &err) + > safe_add_u64(r->head_offset, avail, &err) + || safe_add_u64(r->head_offset, buf_len, &err) + > MAX_OFFSET + || err) + return 0; + + for (i = 0; buf_len > 0 && i < 2; ++i) { + idx = logical_offset % r->alloc; + l = r->alloc - idx; + if (buf_len < l) + l = buf_len; + + memcpy(start + idx, buf, l); + if (r->head_offset < logical_offset + l) + r->head_offset = logical_offset + l; + + logical_offset += l; + buf += l; + buf_len -= l; + } + + assert(buf_len == 0); + + return 1; +} + +static ossl_inline size_t ring_buf_push(struct ring_buf *r, + const unsigned char *buf, + size_t buf_len) +{ + size_t pushed = 0, avail, idx, l; + unsigned char *start = r->start; + + for (;;) { + avail = ring_buf_avail(r); + if (buf_len > avail) + buf_len = avail; + + if (buf_len > MAX_OFFSET - r->head_offset) + buf_len = (size_t)(MAX_OFFSET - r->head_offset); + + if (buf_len == 0) + break; + + idx = r->head_offset % r->alloc; + l = r->alloc - idx; + if (buf_len < l) + l = buf_len; + + memcpy(start + idx, buf, l); + r->head_offset += l; + buf += l; + buf_len -= l; + pushed += l; + } + + return pushed; +} + +static ossl_inline const unsigned char *ring_buf_get_ptr(const struct ring_buf *r, + uint64_t logical_offset, + size_t *max_len) +{ + unsigned char *start = r->start; + size_t idx; + + if (logical_offset >= r->head_offset || logical_offset < r->ctail_offset) + return NULL; + idx = logical_offset % r->alloc; + *max_len = r->alloc - idx; + return start + idx; +} + +/* + * Retrieves data out of the read side of the ring buffer starting at the given + * logical offset. *buf is set to point to a contiguous span of bytes and + * *buf_len is set to the number of contiguous bytes. After this function + * returns, there may or may not be more bytes available at the logical offset + * of (logical_offset + *buf_len) by calling this function again. If the logical + * offset is out of the range retained by the ring buffer, returns 0, else + * returns 1. A logical offset at the end of the range retained by the ring + * buffer is not considered an error and is returned with a *buf_len of 0. + * + * The ring buffer state is not changed. + */ +static ossl_inline int ring_buf_get_buf_at(const struct ring_buf *r, + uint64_t logical_offset, + const unsigned char **buf, + size_t *buf_len) +{ + const unsigned char *start = r->start; + size_t idx, l; + + if (logical_offset > r->head_offset || logical_offset < r->ctail_offset) + return 0; + + if (r->alloc == 0) { + *buf = NULL; + *buf_len = 0; + return 1; + } + + idx = logical_offset % r->alloc; + l = (size_t)(r->head_offset - logical_offset); + if (l > r->alloc - idx) + l = r->alloc - idx; + + *buf = start + idx; + *buf_len = l; + return 1; +} + +static ossl_inline void ring_buf_cpop_range(struct ring_buf *r, + uint64_t start, uint64_t end, + int cleanse) +{ + assert(end >= start); + + if (start > r->ctail_offset || end >= MAX_OFFSET) + return; + + if (cleanse && r->alloc > 0 && end > r->ctail_offset) { + size_t idx = r->ctail_offset % r->alloc; + uint64_t cleanse_end = end + 1; + size_t l; + + if (cleanse_end > r->head_offset) + cleanse_end = r->head_offset; + l = (size_t)(cleanse_end - r->ctail_offset); + if (l > r->alloc - idx) { + OPENSSL_cleanse((unsigned char *)r->start + idx, r->alloc - idx); + l -= r->alloc - idx; + idx = 0; + } + if (l > 0) + OPENSSL_cleanse((unsigned char *)r->start + idx, l); + } + + r->ctail_offset = end + 1; + /* Allow culling unpushed data */ + if (r->head_offset < r->ctail_offset) + r->head_offset = r->ctail_offset; +} + +static ossl_inline int ring_buf_resize(struct ring_buf *r, size_t num_bytes, + int cleanse) +{ + struct ring_buf rnew = {0}; + const unsigned char *src = NULL; + size_t src_len = 0, copied = 0; + + if (num_bytes == r->alloc) + return 1; + + if (num_bytes < ring_buf_used(r)) + return 0; + + rnew.start = OPENSSL_malloc(num_bytes); + if (rnew.start == NULL) + return 0; + + rnew.alloc = num_bytes; + rnew.head_offset = r->head_offset - ring_buf_used(r); + rnew.ctail_offset = rnew.head_offset; + + for (;;) { + if (!ring_buf_get_buf_at(r, r->ctail_offset + copied, &src, &src_len)) { + OPENSSL_free(rnew.start); + return 0; + } + + if (src_len == 0) + break; + + if (ring_buf_push(&rnew, src, src_len) != src_len) { + OPENSSL_free(rnew.start); + return 0; + } + + copied += src_len; + } + + assert(rnew.head_offset == r->head_offset); + rnew.ctail_offset = r->ctail_offset; + + ring_buf_destroy(r, cleanse); + memcpy(r, &rnew, sizeof(*r)); + return 1; +} + +#endif /* OSSL_INTERNAL_RING_BUF_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/safe_math.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/safe_math.h new file mode 100644 index 00000000..be37e6ab --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/safe_math.h @@ -0,0 +1,443 @@ +/* + * Copyright 2021-2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_SAFE_MATH_H +# define OSSL_INTERNAL_SAFE_MATH_H +# pragma once + +# include /* For 'ossl_inline' */ + +# ifndef OPENSSL_NO_BUILTIN_OVERFLOW_CHECKING +# ifdef __has_builtin +# define has(func) __has_builtin(func) +# elif __GNUC__ > 5 +# define has(func) 1 +# endif +# endif /* OPENSSL_NO_BUILTIN_OVERFLOW_CHECKING */ + +# ifndef has +# define has(func) 0 +# endif + +/* + * Safe addition helpers + */ +# if has(__builtin_add_overflow) +# define OSSL_SAFE_MATH_ADDS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_add_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# define OSSL_SAFE_MATH_ADDU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_add_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a + b; \ + } + +# else /* has(__builtin_add_overflow) */ +# define OSSL_SAFE_MATH_ADDS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if ((a < 0) ^ (b < 0) \ + || (a > 0 && b <= max - a) \ + || (a < 0 && b >= min - a) \ + || a == 0) \ + return a + b; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# define OSSL_SAFE_MATH_ADDU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_add_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b > max - a) \ + *err |= 1; \ + return a + b; \ + } +# endif /* has(__builtin_add_overflow) */ + +/* + * Safe subtraction helpers + */ +# if has(__builtin_sub_overflow) +# define OSSL_SAFE_MATH_SUBS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_sub_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_sub_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# else /* has(__builtin_sub_overflow) */ +# define OSSL_SAFE_MATH_SUBS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_sub_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (!((a < 0) ^ (b < 0)) \ + || (b > 0 && a >= min + b) \ + || (b < 0 && a <= max + b) \ + || b == 0) \ + return a - b; \ + *err |= 1; \ + return a < 0 ? min : max; \ + } + +# endif /* has(__builtin_sub_overflow) */ + +# define OSSL_SAFE_MATH_SUBU(type_name, type) \ + static ossl_inline ossl_unused type safe_sub_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b > a) \ + *err |= 1; \ + return a - b; \ + } + +/* + * Safe multiplication helpers + */ +# if has(__builtin_mul_overflow) +# define OSSL_SAFE_MATH_MULS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_mul_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return (a < 0) ^ (b < 0) ? min : max; \ + } + +# define OSSL_SAFE_MATH_MULU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + type r; \ + \ + if (!__builtin_mul_overflow(a, b, &r)) \ + return r; \ + *err |= 1; \ + return a * b; \ + } + +# else /* has(__builtin_mul_overflow) */ +# define OSSL_SAFE_MATH_MULS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (a == 0 || b == 0) \ + return 0; \ + if (a == 1) \ + return b; \ + if (b == 1) \ + return a; \ + if (a != min && b != min) { \ + const type x = a < 0 ? -a : a; \ + const type y = b < 0 ? -b : b; \ + \ + if (x <= max / y) \ + return a * b; \ + } \ + *err |= 1; \ + return (a < 0) ^ (b < 0) ? min : max; \ + } + +# define OSSL_SAFE_MATH_MULU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_mul_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b != 0 && a > max / b) \ + *err |= 1; \ + return a * b; \ + } +# endif /* has(__builtin_mul_overflow) */ + +/* + * Safe division helpers + */ +# define OSSL_SAFE_MATH_DIVS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_div_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b == 0) { \ + *err |= 1; \ + return a < 0 ? min : max; \ + } \ + if (b == -1 && a == min) { \ + *err |= 1; \ + return max; \ + } \ + return a / b; \ + } + +# define OSSL_SAFE_MATH_DIVU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_div_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b != 0) \ + return a / b; \ + *err |= 1; \ + return max; \ + } + +/* + * Safe modulus helpers + */ +# define OSSL_SAFE_MATH_MODS(type_name, type, min, max) \ + static ossl_inline ossl_unused type safe_mod_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b == 0) { \ + *err |= 1; \ + return 0; \ + } \ + if (b == -1 && a == min) { \ + *err |= 1; \ + return max; \ + } \ + return a % b; \ + } + +# define OSSL_SAFE_MATH_MODU(type_name, type) \ + static ossl_inline ossl_unused type safe_mod_ ## type_name(type a, \ + type b, \ + int *err) \ + { \ + if (b != 0) \ + return a % b; \ + *err |= 1; \ + return 0; \ + } + +/* + * Safe negation helpers + */ +# define OSSL_SAFE_MATH_NEGS(type_name, type, min) \ + static ossl_inline ossl_unused type safe_neg_ ## type_name(type a, \ + int *err) \ + { \ + if (a != min) \ + return -a; \ + *err |= 1; \ + return min; \ + } + +# define OSSL_SAFE_MATH_NEGU(type_name, type) \ + static ossl_inline ossl_unused type safe_neg_ ## type_name(type a, \ + int *err) \ + { \ + if (a == 0) \ + return a; \ + *err |= 1; \ + return 1 + ~a; \ + } + +/* + * Safe absolute value helpers + */ +# define OSSL_SAFE_MATH_ABSS(type_name, type, min) \ + static ossl_inline ossl_unused type safe_abs_ ## type_name(type a, \ + int *err) \ + { \ + if (a != min) \ + return a < 0 ? -a : a; \ + *err |= 1; \ + return min; \ + } + +# define OSSL_SAFE_MATH_ABSU(type_name, type) \ + static ossl_inline ossl_unused type safe_abs_ ## type_name(type a, \ + int *err) \ + { \ + return a; \ + } + +/* + * Safe fused multiply divide helpers + * + * These are a bit obscure: + * . They begin by checking the denominator for zero and getting rid of this + * corner case. + * + * . Second is an attempt to do the multiplication directly, if it doesn't + * overflow, the quotient is returned (for signed values there is a + * potential problem here which isn't present for unsigned). + * + * . Finally, the multiplication/division is transformed so that the larger + * of the numerators is divided first. This requires a remainder + * correction: + * + * a b / c = (a / c) b + (a mod c) b / c, where a > b + * + * The individual operations need to be overflow checked (again signed + * being more problematic). + * + * The algorithm used is not perfect but it should be "good enough". + */ +# define OSSL_SAFE_MATH_MULDIVS(type_name, type, max) \ + static ossl_inline ossl_unused type safe_muldiv_ ## type_name(type a, \ + type b, \ + type c, \ + int *err) \ + { \ + int e2 = 0; \ + type q, r, x, y; \ + \ + if (c == 0) { \ + *err |= 1; \ + return a == 0 || b == 0 ? 0 : max; \ + } \ + x = safe_mul_ ## type_name(a, b, &e2); \ + if (!e2) \ + return safe_div_ ## type_name(x, c, err); \ + if (b > a) { \ + x = b; \ + b = a; \ + a = x; \ + } \ + q = safe_div_ ## type_name(a, c, err); \ + r = safe_mod_ ## type_name(a, c, err); \ + x = safe_mul_ ## type_name(r, b, err); \ + y = safe_mul_ ## type_name(q, b, err); \ + q = safe_div_ ## type_name(x, c, err); \ + return safe_add_ ## type_name(y, q, err); \ + } + +# define OSSL_SAFE_MATH_MULDIVU(type_name, type, max) \ + static ossl_inline ossl_unused type safe_muldiv_ ## type_name(type a, \ + type b, \ + type c, \ + int *err) \ + { \ + int e2 = 0; \ + type x, y; \ + \ + if (c == 0) { \ + *err |= 1; \ + return a == 0 || b == 0 ? 0 : max; \ + } \ + x = safe_mul_ ## type_name(a, b, &e2); \ + if (!e2) \ + return x / c; \ + if (b > a) { \ + x = b; \ + b = a; \ + a = x; \ + } \ + x = safe_mul_ ## type_name(a % c, b, err); \ + y = safe_mul_ ## type_name(a / c, b, err); \ + return safe_add_ ## type_name(y, x / c, err); \ + } + +/* + * Calculate a / b rounding up: + * i.e. a / b + (a % b != 0) + * Which is usually (less safely) converted to (a + b - 1) / b + * If you *know* that b != 0, then it's safe to ignore err. + */ +#define OSSL_SAFE_MATH_DIV_ROUND_UP(type_name, type, max) \ + static ossl_inline ossl_unused type safe_div_round_up_ ## type_name \ + (type a, type b, int *errp) \ + { \ + type x; \ + int *err, err_local = 0; \ + \ + /* Allow errors to be ignored by callers */ \ + err = errp != NULL ? errp : &err_local; \ + /* Fast path, both positive */ \ + if (b > 0 && a > 0) { \ + /* Faster path: no overflow concerns */ \ + if (a < max - b) \ + return (a + b - 1) / b; \ + return a / b + (a % b != 0); \ + } \ + if (b == 0) { \ + *err |= 1; \ + return a == 0 ? 0 : max; \ + } \ + if (a == 0) \ + return 0; \ + /* Rather slow path because there are negatives involved */ \ + x = safe_mod_ ## type_name(a, b, err); \ + return safe_add_ ## type_name(safe_div_ ## type_name(a, b, err), \ + x != 0, err); \ + } + +/* Calculate ranges of types */ +# define OSSL_SAFE_MATH_MINS(type) ((type)1 << (sizeof(type) * 8 - 1)) +# define OSSL_SAFE_MATH_MAXS(type) (~OSSL_SAFE_MATH_MINS(type)) +# define OSSL_SAFE_MATH_MAXU(type) (~(type)0) + +/* + * Wrapper macros to create all the functions of a given type + */ +# define OSSL_SAFE_MATH_SIGNED(type_name, type) \ + OSSL_SAFE_MATH_ADDS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_SUBS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_MULS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_DIVS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_MODS(type_name, type, OSSL_SAFE_MATH_MINS(type), \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_DIV_ROUND_UP(type_name, type, \ + OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_MULDIVS(type_name, type, OSSL_SAFE_MATH_MAXS(type)) \ + OSSL_SAFE_MATH_NEGS(type_name, type, OSSL_SAFE_MATH_MINS(type)) \ + OSSL_SAFE_MATH_ABSS(type_name, type, OSSL_SAFE_MATH_MINS(type)) + +# define OSSL_SAFE_MATH_UNSIGNED(type_name, type) \ + OSSL_SAFE_MATH_ADDU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_SUBU(type_name, type) \ + OSSL_SAFE_MATH_MULU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_DIVU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_MODU(type_name, type) \ + OSSL_SAFE_MATH_DIV_ROUND_UP(type_name, type, \ + OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_MULDIVU(type_name, type, OSSL_SAFE_MATH_MAXU(type)) \ + OSSL_SAFE_MATH_NEGU(type_name, type) \ + OSSL_SAFE_MATH_ABSU(type_name, type) + +#endif /* OSSL_INTERNAL_SAFE_MATH_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/sockets.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/sockets.h index 1f5fefcc..2550c56b 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/sockets.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/sockets.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -61,7 +61,25 @@ struct servent *PASCAL getservbyname(const char *, const char *); # define accept(s,f,l) ((int)accept(s,f,l)) # endif +/* Windows have other names for shutdown() reasons */ +# ifndef SHUT_RD +# define SHUT_RD SD_RECEIVE +# endif +# ifndef SHUT_WR +# define SHUT_WR SD_SEND +# endif +# ifndef SHUT_RDWR +# define SHUT_RDWR SD_BOTH +# endif + # else +# if defined(__APPLE__) + /* + * This must be defined before including to get + * IPV6_RECVPKTINFO + */ +# define __APPLE_USE_RFC_3542 +# endif # ifndef NO_SYS_PARAM_H # include @@ -71,6 +89,9 @@ struct servent *PASCAL getservbyname(const char *, const char *); # endif # include +# if defined(OPENSSL_SYS_VMS) +typedef size_t socklen_t; /* Currently appears to be missing on VMS */ +# endif # if defined(OPENSSL_SYS_VMS_NODECC) # include # include @@ -95,6 +116,13 @@ struct servent *PASCAL getservbyname(const char *, const char *); # include # endif +# ifdef OPENSSL_SYS_UNIX +# ifndef OPENSSL_SYS_TANDEM +# include +# endif +# include +# endif + # ifndef VMS # include # else @@ -136,12 +164,15 @@ struct servent *PASCAL getservbyname(const char *, const char *); # define get_last_socket_error() errno # define clear_socket_error() errno=0 +# define get_last_socket_error_is_eintr() (get_last_socket_error() == EINTR) # if defined(OPENSSL_SYS_WINDOWS) # undef get_last_socket_error # undef clear_socket_error +# undef get_last_socket_error_is_eintr # define get_last_socket_error() WSAGetLastError() # define clear_socket_error() WSASetLastError(0) +# define get_last_socket_error_is_eintr() (get_last_socket_error() == WSAEINTR) # define readsocket(s,b,n) recv((s),(b),(n),0) # define writesocket(s,b,n) send((s),(b),(n),0) # elif defined(__DJGPP__) diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl.h new file mode 100644 index 00000000..8a0c7974 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl.h @@ -0,0 +1,24 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef OSSL_INTERNAL_SSL_H +# define OSSL_INTERNAL_SSL_H +# pragma once + +typedef void (*ossl_msg_cb)(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); + +int ossl_ssl_get_error(const SSL *s, int i, int check_err); + +/* Set if this is the QUIC handshake layer */ +# define TLS1_FLAGS_QUIC 0x2000 + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl3_cbc.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl3_cbc.h new file mode 100644 index 00000000..4fb5da19 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/ssl3_cbc.h @@ -0,0 +1,40 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +/* tls_pad.c */ +int ssl3_cbc_remove_padding_and_mac(size_t *reclen, + size_t origreclen, + unsigned char *recdata, + unsigned char **mac, + int *alloced, + size_t block_size, size_t mac_size, + OSSL_LIB_CTX *libctx); + +int tls1_cbc_remove_padding_and_mac(size_t *reclen, + size_t origreclen, + unsigned char *recdata, + unsigned char **mac, + int *alloced, + size_t block_size, size_t mac_size, + int aead, + OSSL_LIB_CTX *libctx); + +/* ssl3_cbc.c */ +__owur char ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx); +__owur int ssl3_cbc_digest_record(const EVP_MD *md, + unsigned char *md_out, + size_t *md_out_size, + const unsigned char *header, + const unsigned char *data, + size_t data_size, + size_t data_plus_mac_plus_padding_size, + const unsigned char *mac_secret, + size_t mac_secret_length, char is_sslv3); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/statem.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/statem.h new file mode 100644 index 00000000..136e6523 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/statem.h @@ -0,0 +1,171 @@ +/* + * Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_INTERNAL_STATEM_H +# define OSSL_INTERNAL_STATEM_H + +/***************************************************************************** + * * + * These enums should be considered PRIVATE to the state machine. No * + * non-state machine code should need to use these * + * * + *****************************************************************************/ +/* + * Valid return codes used for functions performing work prior to or after + * sending or receiving a message + */ +typedef enum { + /* Something went wrong */ + WORK_ERROR, + /* We're done working and there shouldn't be anything else to do after */ + WORK_FINISHED_STOP, + /* We're done working move onto the next thing */ + WORK_FINISHED_CONTINUE, + /* We're working on phase A */ + WORK_MORE_A, + /* We're working on phase B */ + WORK_MORE_B, + /* We're working on phase C */ + WORK_MORE_C +} WORK_STATE; + +/* Write transition return codes */ +typedef enum { + /* Something went wrong */ + WRITE_TRAN_ERROR, + /* A transition was successfully completed and we should continue */ + WRITE_TRAN_CONTINUE, + /* There is no more write work to be done */ + WRITE_TRAN_FINISHED +} WRITE_TRAN; + +/* Message flow states */ +typedef enum { + /* No handshake in progress */ + MSG_FLOW_UNINITED, + /* A permanent error with this connection */ + MSG_FLOW_ERROR, + /* We are reading messages */ + MSG_FLOW_READING, + /* We are writing messages */ + MSG_FLOW_WRITING, + /* Handshake has finished */ + MSG_FLOW_FINISHED +} MSG_FLOW_STATE; + +/* Read states */ +typedef enum { + READ_STATE_HEADER, + READ_STATE_BODY, + READ_STATE_POST_PROCESS +} READ_STATE; + +/* Write states */ +typedef enum { + WRITE_STATE_TRANSITION, + WRITE_STATE_PRE_WORK, + WRITE_STATE_SEND, + WRITE_STATE_POST_WORK +} WRITE_STATE; + +typedef enum { + CON_FUNC_ERROR = 0, + CON_FUNC_SUCCESS, + CON_FUNC_DONT_SEND +} CON_FUNC_RETURN; + +typedef int (*ossl_statem_mutate_handshake_cb)(const unsigned char *msgin, + size_t inlen, + unsigned char **msgout, + size_t *outlen, + void *arg); + +typedef void (*ossl_statem_finish_mutate_handshake_cb)(void *arg); + +/***************************************************************************** + * * + * This structure should be considered "opaque" to anything outside of the * + * state machine. No non-state machine code should be accessing the members * + * of this structure. * + * * + *****************************************************************************/ + +struct ossl_statem_st { + MSG_FLOW_STATE state; + WRITE_STATE write_state; + WORK_STATE write_state_work; + READ_STATE read_state; + WORK_STATE read_state_work; + OSSL_HANDSHAKE_STATE hand_state; + /* The handshake state requested by an API call (e.g. HelloRequest) */ + OSSL_HANDSHAKE_STATE request_state; + int in_init; + int read_state_first_init; + /* true when we are actually in SSL_accept() or SSL_connect() */ + int in_handshake; + /* + * True when are processing a "real" handshake that needs cleaning up (not + * just a HelloRequest or similar). + */ + int cleanuphand; + /* Should we skip the CertificateVerify message? */ + unsigned int no_cert_verify; + int use_timer; + + /* Test harness message mutator callbacks */ + ossl_statem_mutate_handshake_cb mutate_handshake_cb; + ossl_statem_finish_mutate_handshake_cb finish_mutate_handshake_cb; + void *mutatearg; + unsigned int write_in_progress : 1; +}; +typedef struct ossl_statem_st OSSL_STATEM; + +/***************************************************************************** + * * + * The following macros/functions represent the libssl internal API to the * + * state machine. Any libssl code may call these functions/macros * + * * + *****************************************************************************/ + +typedef struct ssl_connection_st SSL_CONNECTION; + +__owur int ossl_statem_accept(SSL *s); +__owur int ossl_statem_connect(SSL *s); +OSSL_HANDSHAKE_STATE ossl_statem_get_state(SSL_CONNECTION *s); +void ossl_statem_clear(SSL_CONNECTION *s); +void ossl_statem_set_renegotiate(SSL_CONNECTION *s); +void ossl_statem_send_fatal(SSL_CONNECTION *s, int al); +void ossl_statem_fatal(SSL_CONNECTION *s, int al, int reason, + const char *fmt, ...); +# define SSLfatal_alert(s, al) ossl_statem_send_fatal((s), (al)) +# define SSLfatal(s, al, r) SSLfatal_data((s), (al), (r), NULL) +# define SSLfatal_data \ + (ERR_new(), \ + ERR_set_debug(OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC), \ + ossl_statem_fatal) + +int ossl_statem_in_error(const SSL_CONNECTION *s); +void ossl_statem_set_in_init(SSL_CONNECTION *s, int init); +int ossl_statem_get_in_handshake(SSL_CONNECTION *s); +void ossl_statem_set_in_handshake(SSL_CONNECTION *s, int inhand); +__owur int ossl_statem_skip_early_data(SSL_CONNECTION *s); +void ossl_statem_check_finish_init(SSL_CONNECTION *s, int send); +void ossl_statem_set_hello_verify_done(SSL_CONNECTION *s); +__owur int ossl_statem_app_data_allowed(SSL_CONNECTION *s); +__owur int ossl_statem_export_allowed(SSL_CONNECTION *s); +__owur int ossl_statem_export_early_allowed(SSL_CONNECTION *s); + +/* Flush the write BIO */ +int statem_flush(SSL_CONNECTION *s); + +int ossl_statem_set_mutator(SSL *s, + ossl_statem_mutate_handshake_cb mutate_handshake_cb, + ossl_statem_finish_mutate_handshake_cb finish_mutate_handshake_cb, + void *mutatearg); + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread.h new file mode 100644 index 00000000..8c5bad77 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread.h @@ -0,0 +1,39 @@ +/* + * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_INTERNAL_THREAD_H +# define OPENSSL_INTERNAL_THREAD_H +# include +# include +# include +# include +# include +# include "crypto/context.h" + +void *ossl_crypto_thread_start(OSSL_LIB_CTX *ctx, CRYPTO_THREAD_ROUTINE start, + void *data); +int ossl_crypto_thread_join(void *task, CRYPTO_THREAD_RETVAL *retval); +int ossl_crypto_thread_clean(void *vhandle); +uint64_t ossl_get_avail_threads(OSSL_LIB_CTX *ctx); + +# if defined(OPENSSL_THREADS) + +# define OSSL_LIB_CTX_GET_THREADS(CTX) \ + ossl_lib_ctx_get_data(CTX, OSSL_LIB_CTX_THREAD_INDEX); + +typedef struct openssl_threads_st { + uint64_t max_threads; + uint64_t active_threads; + CRYPTO_MUTEX *lock; + CRYPTO_CONDVAR *cond_finished; +} OSSL_LIB_CTX_THREADS; + +# endif /* defined(OPENSSL_THREADS) */ + +#endif /* OPENSSL_INTERNAL_THREAD_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread_arch.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread_arch.h new file mode 100644 index 00000000..1bfc0ebb --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/thread_arch.h @@ -0,0 +1,127 @@ +/* + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_THREAD_ARCH_H +# define OSSL_INTERNAL_THREAD_ARCH_H +# include +# include +# include "internal/time.h" + +# if defined(_WIN32) +# include +# endif + +# if defined(OPENSSL_THREADS) && defined(OPENSSL_SYS_UNIX) +# define OPENSSL_THREADS_POSIX +# elif defined(OPENSSL_THREADS) && defined(OPENSSL_SYS_VMS) +# define OPENSSL_THREADS_POSIX +# elif defined(OPENSSL_THREADS) && defined(OPENSSL_SYS_WINDOWS) && \ + defined(_WIN32_WINNT) +# if _WIN32_WINNT >= 0x0600 +# define OPENSSL_THREADS_WINNT +# elif _WIN32_WINNT >= 0x0501 +# define OPENSSL_THREADS_WINNT +# define OPENSSL_THREADS_WINNT_LEGACY +# else +# define OPENSSL_THREADS_NONE +# endif +# else +# define OPENSSL_THREADS_NONE +# endif + +# include + +typedef void CRYPTO_MUTEX; +typedef void CRYPTO_CONDVAR; + +CRYPTO_MUTEX *ossl_crypto_mutex_new(void); +void ossl_crypto_mutex_lock(CRYPTO_MUTEX *mutex); +int ossl_crypto_mutex_try_lock(CRYPTO_MUTEX *mutex); +void ossl_crypto_mutex_unlock(CRYPTO_MUTEX *mutex); +void ossl_crypto_mutex_free(CRYPTO_MUTEX **mutex); + +CRYPTO_CONDVAR *ossl_crypto_condvar_new(void); +void ossl_crypto_condvar_wait(CRYPTO_CONDVAR *cv, CRYPTO_MUTEX *mutex); +void ossl_crypto_condvar_wait_timeout(CRYPTO_CONDVAR *cv, CRYPTO_MUTEX *mutex, + OSSL_TIME deadline); +void ossl_crypto_condvar_broadcast(CRYPTO_CONDVAR *cv); +void ossl_crypto_condvar_signal(CRYPTO_CONDVAR *cv); +void ossl_crypto_condvar_free(CRYPTO_CONDVAR **cv); + +typedef uint32_t CRYPTO_THREAD_RETVAL; +typedef CRYPTO_THREAD_RETVAL (*CRYPTO_THREAD_ROUTINE)(void *); +typedef CRYPTO_THREAD_RETVAL (*CRYPTO_THREAD_ROUTINE_CB)(void *, + void (**)(void *), + void **); + +# define CRYPTO_THREAD_NO_STATE 0UL +# define CRYPTO_THREAD_FINISHED (1UL << 0) +# define CRYPTO_THREAD_JOIN_AWAIT (1UL << 1) +# define CRYPTO_THREAD_JOINED (1UL << 2) + +# define CRYPTO_THREAD_GET_STATE(THREAD, FLAG) ((THREAD)->state & (FLAG)) +# define CRYPTO_THREAD_GET_ERROR(THREAD, FLAG) (((THREAD)->state >> 16) & (FLAG)) + +typedef struct crypto_thread_st { + uint32_t state; + void *data; + CRYPTO_THREAD_ROUTINE routine; + CRYPTO_THREAD_RETVAL retval; + void *handle; + CRYPTO_MUTEX *lock; + CRYPTO_MUTEX *statelock; + CRYPTO_CONDVAR *condvar; + unsigned long thread_id; + int joinable; + OSSL_LIB_CTX *ctx; +} CRYPTO_THREAD; + +# if defined(OPENSSL_THREADS) + +# define CRYPTO_THREAD_UNSET_STATE(THREAD, FLAG) \ + do { \ + (THREAD)->state &= ~(FLAG); \ + } while ((void)0, 0) + +# define CRYPTO_THREAD_SET_STATE(THREAD, FLAG) \ + do { \ + (THREAD)->state |= (FLAG); \ + } while ((void)0, 0) + +# define CRYPTO_THREAD_SET_ERROR(THREAD, FLAG) \ + do { \ + (THREAD)->state |= ((FLAG) << 16); \ + } while ((void)0, 0) + +# define CRYPTO_THREAD_UNSET_ERROR(THREAD, FLAG) \ + do { \ + (THREAD)->state &= ~((FLAG) << 16); \ + } while ((void)0, 0) + +# else + +# define CRYPTO_THREAD_UNSET_STATE(THREAD, FLAG) +# define CRYPTO_THREAD_SET_STATE(THREAD, FLAG) +# define CRYPTO_THREAD_SET_ERROR(THREAD, FLAG) +# define CRYPTO_THREAD_UNSET_ERROR(THREAD, FLAG) + +# endif /* defined(OPENSSL_THREADS) */ + +CRYPTO_THREAD * ossl_crypto_thread_native_start(CRYPTO_THREAD_ROUTINE routine, + void *data, int joinable); +int ossl_crypto_thread_native_spawn(CRYPTO_THREAD *thread); +int ossl_crypto_thread_native_join(CRYPTO_THREAD *thread, + CRYPTO_THREAD_RETVAL *retval); +int ossl_crypto_thread_native_perform_join(CRYPTO_THREAD *thread, + CRYPTO_THREAD_RETVAL *retval); +int ossl_crypto_thread_native_exit(void); +int ossl_crypto_thread_native_is_self(CRYPTO_THREAD *thread); +int ossl_crypto_thread_native_clean(CRYPTO_THREAD *thread); + +#endif /* OSSL_INTERNAL_THREAD_ARCH_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/time.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/time.h new file mode 100644 index 00000000..14d724ab --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/time.h @@ -0,0 +1,242 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OSSL_INTERNAL_TIME_H +# define OSSL_INTERNAL_TIME_H +# pragma once + +# include /* uint64_t */ +# include "internal/e_os.h" /* for struct timeval */ +# include "internal/safe_math.h" + +/* + * Internal type defining a time. + * This should be treated as an opaque structure. + * + * The time datum is Unix's 1970 and at nanosecond precision, this gives + * a range of 584 years roughly. + */ +typedef struct { + uint64_t t; /* Ticks since the epoch */ +} OSSL_TIME; + +/* The precision of times allows this many values per second */ +# define OSSL_TIME_SECOND ((uint64_t)1000000000) + +/* One millisecond. */ +# define OSSL_TIME_MS (OSSL_TIME_SECOND / 1000) + +/* One microsecond. */ +# define OSSL_TIME_US (OSSL_TIME_MS / 1000) + +/* One nanosecond. */ +# define OSSL_TIME_NS (OSSL_TIME_US / 1000) + +#define ossl_seconds2time(s) ossl_ticks2time((s) * OSSL_TIME_SECOND) +#define ossl_time2seconds(t) (ossl_time2ticks(t) / OSSL_TIME_SECOND) +#define ossl_ms2time(ms) ossl_ticks2time((ms) * OSSL_TIME_MS) +#define ossl_time2ms(t) (ossl_time2ticks(t) / OSSL_TIME_MS) +#define ossl_us2time(us) ossl_ticks2time((us) * OSSL_TIME_US) +#define ossl_time2us(t) (ossl_time2ticks(t) / OSSL_TIME_US) + +/* + * Arithmetic operations on times. + * These operations are saturating, in that an overflow or underflow returns + * the largest or smallest value respectively. + */ +OSSL_SAFE_MATH_UNSIGNED(time, uint64_t) + +/* Convert a tick count into a time */ +static ossl_unused ossl_inline +OSSL_TIME ossl_ticks2time(uint64_t ticks) +{ + OSSL_TIME r; + + r.t = ticks; + return r; +} + +/* Convert a time to a tick count */ +static ossl_unused ossl_inline +uint64_t ossl_time2ticks(OSSL_TIME t) +{ + return t.t; +} + +/* Get current time */ +OSSL_TIME ossl_time_now(void); + +/* The beginning and end of the time range */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_zero(void) +{ + return ossl_ticks2time(0); +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_infinite(void) +{ + return ossl_ticks2time(~(uint64_t)0); +} + + +/* Convert time to timeval */ +static ossl_unused ossl_inline +struct timeval ossl_time_to_timeval(OSSL_TIME t) +{ + struct timeval tv; + int err = 0; + + /* + * Round up any nano secs which struct timeval doesn't support. Ensures that + * we never return a zero time if the input time is non zero + */ + t.t = safe_add_time(t.t, OSSL_TIME_US - 1, &err); + if (err) + t = ossl_time_infinite(); + +#ifdef _WIN32 + tv.tv_sec = (long int)(t.t / OSSL_TIME_SECOND); +#else + tv.tv_sec = (time_t)(t.t / OSSL_TIME_SECOND); +#endif + tv.tv_usec = (t.t % OSSL_TIME_SECOND) / OSSL_TIME_US; + return tv; +} + +/* Convert timeval to time */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_from_timeval(struct timeval tv) +{ + OSSL_TIME t; + +#ifndef __DJGPP__ /* tv_sec is unsigned on djgpp. */ + if (tv.tv_sec < 0) + return ossl_time_zero(); +#endif + t.t = tv.tv_sec * OSSL_TIME_SECOND + tv.tv_usec * OSSL_TIME_US; + return t; +} + +/* Convert OSSL_TIME to time_t */ +static ossl_unused ossl_inline +time_t ossl_time_to_time_t(OSSL_TIME t) +{ + return (time_t)(t.t / OSSL_TIME_SECOND); +} + +/* Convert time_t to OSSL_TIME */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_from_time_t(time_t t) +{ + OSSL_TIME ot; + + ot.t = t; + ot.t *= OSSL_TIME_SECOND; + return ot; +} + +/* Compare two time values, return -1 if less, 1 if greater and 0 if equal */ +static ossl_unused ossl_inline +int ossl_time_compare(OSSL_TIME a, OSSL_TIME b) +{ + if (a.t > b.t) + return 1; + if (a.t < b.t) + return -1; + return 0; +} + +/* Returns true if an OSSL_TIME is ossl_time_zero(). */ +static ossl_unused ossl_inline +int ossl_time_is_zero(OSSL_TIME t) +{ + return ossl_time_compare(t, ossl_time_zero()) == 0; +} + +/* Returns true if an OSSL_TIME is ossl_time_infinite(). */ +static ossl_unused ossl_inline +int ossl_time_is_infinite(OSSL_TIME t) +{ + return ossl_time_compare(t, ossl_time_infinite()) == 0; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_add(OSSL_TIME a, OSSL_TIME b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_add_time(a.t, b.t, &err); + return err ? ossl_time_infinite() : r; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_subtract(OSSL_TIME a, OSSL_TIME b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_sub_time(a.t, b.t, &err); + return err ? ossl_time_zero() : r; +} + +/* Returns |a - b|. */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_abs_difference(OSSL_TIME a, OSSL_TIME b) +{ + return a.t > b.t ? ossl_time_subtract(a, b) + : ossl_time_subtract(b, a); +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_multiply(OSSL_TIME a, uint64_t b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_mul_time(a.t, b, &err); + return err ? ossl_time_infinite() : r; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_divide(OSSL_TIME a, uint64_t b) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_div_time(a.t, b, &err); + return err ? ossl_time_zero() : r; +} + +static ossl_unused ossl_inline +OSSL_TIME ossl_time_muldiv(OSSL_TIME a, uint64_t b, uint64_t c) +{ + OSSL_TIME r; + int err = 0; + + r.t = safe_muldiv_time(a.t, b, c, &err); + return err ? ossl_time_zero() : r; +} + +/* Return higher of the two given time values. */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_max(OSSL_TIME a, OSSL_TIME b) +{ + return a.t > b.t ? a : b; +} + +/* Return the lower of the two given time values. */ +static ossl_unused ossl_inline +OSSL_TIME ossl_time_min(OSSL_TIME a, OSSL_TIME b) +{ + return a.t < b.t ? a : b; +} + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tlsgroups.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tlsgroups.h index 8a35ced1..73fb53bc 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tlsgroups.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tlsgroups.h @@ -41,6 +41,16 @@ # define OSSL_TLS_GROUP_ID_brainpoolP512r1 0x001C # define OSSL_TLS_GROUP_ID_x25519 0x001D # define OSSL_TLS_GROUP_ID_x448 0x001E +# define OSSL_TLS_GROUP_ID_brainpoolP256r1_tls13 0x001F +# define OSSL_TLS_GROUP_ID_brainpoolP384r1_tls13 0x0020 +# define OSSL_TLS_GROUP_ID_brainpoolP512r1_tls13 0x0021 +# define OSSL_TLS_GROUP_ID_gc256A 0x0022 +# define OSSL_TLS_GROUP_ID_gc256B 0x0023 +# define OSSL_TLS_GROUP_ID_gc256C 0x0024 +# define OSSL_TLS_GROUP_ID_gc256D 0x0025 +# define OSSL_TLS_GROUP_ID_gc512A 0x0026 +# define OSSL_TLS_GROUP_ID_gc512B 0x0027 +# define OSSL_TLS_GROUP_ID_gc512C 0x0028 # define OSSL_TLS_GROUP_ID_ffdhe2048 0x0100 # define OSSL_TLS_GROUP_ID_ffdhe3072 0x0101 # define OSSL_TLS_GROUP_ID_ffdhe4096 0x0102 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tsan_assist.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tsan_assist.h index 17205d10..a840df0b 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tsan_assist.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/tsan_assist.h @@ -47,33 +47,37 @@ * can use TSAN_QUALIFIER in cast specifically when it has to count. */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ +#ifndef OSSL_INTERNAL_TSAN_ASSIST_H +# define OSSL_INTERNAL_TSAN_ASSIST_H +# pragma once + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \ && !defined(__STDC_NO_ATOMICS__) -# include +# include -# if defined(ATOMIC_POINTER_LOCK_FREE) \ +# if defined(ATOMIC_POINTER_LOCK_FREE) \ && ATOMIC_POINTER_LOCK_FREE >= 2 -# define TSAN_QUALIFIER _Atomic -# define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed) -# define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed) -# define tsan_add(ptr, n) atomic_fetch_add_explicit((ptr), (n), memory_order_relaxed) -# define tsan_ld_acq(ptr) atomic_load_explicit((ptr), memory_order_acquire) -# define tsan_st_rel(ptr, val) atomic_store_explicit((ptr), (val), memory_order_release) -# endif +# define TSAN_QUALIFIER _Atomic +# define tsan_load(ptr) atomic_load_explicit((ptr), memory_order_relaxed) +# define tsan_store(ptr, val) atomic_store_explicit((ptr), (val), memory_order_relaxed) +# define tsan_add(ptr, n) atomic_fetch_add_explicit((ptr), (n), memory_order_relaxed) +# define tsan_ld_acq(ptr) atomic_load_explicit((ptr), memory_order_acquire) +# define tsan_st_rel(ptr, val) atomic_store_explicit((ptr), (val), memory_order_release) +# endif -#elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) +# elif defined(__GNUC__) && defined(__ATOMIC_RELAXED) -# if defined(__GCC_ATOMIC_POINTER_LOCK_FREE) \ +# if defined(__GCC_ATOMIC_POINTER_LOCK_FREE) \ && __GCC_ATOMIC_POINTER_LOCK_FREE >= 2 -# define TSAN_QUALIFIER volatile -# define tsan_load(ptr) __atomic_load_n((ptr), __ATOMIC_RELAXED) -# define tsan_store(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELAXED) -# define tsan_add(ptr, n) __atomic_fetch_add((ptr), (n), __ATOMIC_RELAXED) -# define tsan_ld_acq(ptr) __atomic_load_n((ptr), __ATOMIC_ACQUIRE) -# define tsan_st_rel(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELEASE) -# endif +# define TSAN_QUALIFIER volatile +# define tsan_load(ptr) __atomic_load_n((ptr), __ATOMIC_RELAXED) +# define tsan_store(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELAXED) +# define tsan_add(ptr, n) __atomic_fetch_add((ptr), (n), __ATOMIC_RELAXED) +# define tsan_ld_acq(ptr) __atomic_load_n((ptr), __ATOMIC_ACQUIRE) +# define tsan_st_rel(ptr, val) __atomic_store_n((ptr), (val), __ATOMIC_RELEASE) +# endif -#elif defined(_MSC_VER) && _MSC_VER>=1200 \ +# elif defined(_MSC_VER) && _MSC_VER>=1200 \ && (defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || \ defined(_M_ARM64) || (defined(_M_ARM) && _M_ARM >= 7 && !defined(_WIN32_WCE))) /* @@ -87,62 +91,63 @@ * with additional instructions and penalties, it kind of makes sense to * default to "iso"... */ -# define TSAN_QUALIFIER volatile -# if defined(_M_ARM) || defined(_M_ARM64) -# define _InterlockedExchangeAdd _InterlockedExchangeAdd_nf -# pragma intrinsic(_InterlockedExchangeAdd_nf) -# pragma intrinsic(__iso_volatile_load32, __iso_volatile_store32) -# ifdef _WIN64 -# define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_nf -# pragma intrinsic(_InterlockedExchangeAdd64_nf) -# pragma intrinsic(__iso_volatile_load64, __iso_volatile_store64) -# define tsan_load(ptr) (sizeof(*(ptr)) == 8 ? __iso_volatile_load64(ptr) \ +# define TSAN_QUALIFIER volatile +# if defined(_M_ARM) || defined(_M_ARM64) +# define _InterlockedExchangeAdd _InterlockedExchangeAdd_nf +# pragma intrinsic(_InterlockedExchangeAdd_nf) +# pragma intrinsic(__iso_volatile_load32, __iso_volatile_store32) +# ifdef _WIN64 +# define _InterlockedExchangeAdd64 _InterlockedExchangeAdd64_nf +# pragma intrinsic(_InterlockedExchangeAdd64_nf) +# pragma intrinsic(__iso_volatile_load64, __iso_volatile_store64) +# define tsan_load(ptr) (sizeof(*(ptr)) == 8 ? __iso_volatile_load64(ptr) \ : __iso_volatile_load32(ptr)) -# define tsan_store(ptr, val) (sizeof(*(ptr)) == 8 ? __iso_volatile_store64((ptr), (val)) \ +# define tsan_store(ptr, val) (sizeof(*(ptr)) == 8 ? __iso_volatile_store64((ptr), (val)) \ : __iso_volatile_store32((ptr), (val))) +# else +# define tsan_load(ptr) __iso_volatile_load32(ptr) +# define tsan_store(ptr, val) __iso_volatile_store32((ptr), (val)) +# endif # else -# define tsan_load(ptr) __iso_volatile_load32(ptr) -# define tsan_store(ptr, val) __iso_volatile_store32((ptr), (val)) +# define tsan_load(ptr) (*(ptr)) +# define tsan_store(ptr, val) (*(ptr) = (val)) # endif -# else +# pragma intrinsic(_InterlockedExchangeAdd) +# ifdef _WIN64 +# pragma intrinsic(_InterlockedExchangeAdd64) +# define tsan_add(ptr, n) (sizeof(*(ptr)) == 8 ? _InterlockedExchangeAdd64((ptr), (n)) \ + : _InterlockedExchangeAdd((ptr), (n))) +# else +# define tsan_add(ptr, n) _InterlockedExchangeAdd((ptr), (n)) +# endif +# if !defined(_ISO_VOLATILE) +# define tsan_ld_acq(ptr) (*(ptr)) +# define tsan_st_rel(ptr, val) (*(ptr) = (val)) +# endif + +# endif + +# ifndef TSAN_QUALIFIER + +# ifdef OPENSSL_THREADS +# define TSAN_QUALIFIER volatile +# define TSAN_REQUIRES_LOCKING +# else /* OPENSSL_THREADS */ +# define TSAN_QUALIFIER +# endif /* OPENSSL_THREADS */ + # define tsan_load(ptr) (*(ptr)) # define tsan_store(ptr, val) (*(ptr) = (val)) -# endif -# pragma intrinsic(_InterlockedExchangeAdd) -# ifdef _WIN64 -# pragma intrinsic(_InterlockedExchangeAdd64) -# define tsan_add(ptr, n) (sizeof(*(ptr)) == 8 ? _InterlockedExchangeAdd64((ptr), (n)) \ - : _InterlockedExchangeAdd((ptr), (n))) -# else -# define tsan_add(ptr, n) _InterlockedExchangeAdd((ptr), (n)) -# endif -# if !defined(_ISO_VOLATILE) -# define tsan_ld_acq(ptr) (*(ptr)) -# define tsan_st_rel(ptr, val) (*(ptr) = (val)) -# endif - -#endif - -#ifndef TSAN_QUALIFIER - -# ifdef OPENSSL_THREADS -# define TSAN_QUALIFIER volatile -# define TSAN_REQUIRES_LOCKING -# else /* OPENSSL_THREADS */ -# define TSAN_QUALIFIER -# endif /* OPENSSL_THREADS */ - -# define tsan_load(ptr) (*(ptr)) -# define tsan_store(ptr, val) (*(ptr) = (val)) -# define tsan_add(ptr, n) (*(ptr) += (n)) +# define tsan_add(ptr, n) (*(ptr) += (n)) /* * Lack of tsan_ld_acq and tsan_ld_rel means that compiler support is not * sophisticated enough to support them. Code that relies on them should be * protected with #ifdef tsan_ld_acq with locked fallback. */ +# endif + +# define tsan_counter(ptr) tsan_add((ptr), 1) +# define tsan_decr(ptr) tsan_add((ptr), -1) + #endif - -#define tsan_counter(ptr) tsan_add((ptr), 1) -#define tsan_decr(ptr) tsan_add((ptr), -1) - diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/uint_set.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/uint_set.h new file mode 100644 index 00000000..dcb29b33 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/internal/uint_set.h @@ -0,0 +1,63 @@ +/* + * Copyright 2022 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +#ifndef OSSL_UINT_SET_H +# define OSSL_UINT_SET_H + +#include "openssl/params.h" +#include "internal/list.h" + +/* + * uint64_t Integer Sets + * ===================== + * + * Utilities for managing a logical set of unsigned 64-bit integers. The + * structure tracks each contiguous range of integers using one allocation and + * is thus optimised for cases where integers tend to appear consecutively. + * Queries are optimised under the assumption that they will generally be made + * on integers near the end of the set. + * + * Discussion of implementation details can be found in uint_set.c. + */ +typedef struct uint_range_st { + uint64_t start, end; +} UINT_RANGE; + +typedef struct uint_set_item_st UINT_SET_ITEM; +struct uint_set_item_st { + OSSL_LIST_MEMBER(uint_set, UINT_SET_ITEM); + UINT_RANGE range; +}; + +DEFINE_LIST_OF(uint_set, UINT_SET_ITEM); + +typedef OSSL_LIST(uint_set) UINT_SET; + +void ossl_uint_set_init(UINT_SET *s); +void ossl_uint_set_destroy(UINT_SET *s); + +/* + * Insert a range into a integer set. Returns 0 on allocation failure, in which + * case the integer set is in a valid but undefined state. Otherwise, returns 1. + * Ranges can overlap existing ranges without limitation. If a range is a subset + * of an existing range in the set, this is a no-op and returns 1. + */ +int ossl_uint_set_insert(UINT_SET *s, const UINT_RANGE *range); + +/* + * Remove a range from the set. Returns 0 on allocation failure, in which case + * the integer set is unchanged. Otherwise, returns 1. Ranges which are not + * already in the set can be removed without issue. If a passed range is not in + * the integer set at all, this is a no-op and returns 1. + */ +int ossl_uint_set_remove(UINT_SET *s, const UINT_RANGE *range); + +/* Returns 1 iff the given integer is in the integer set. */ +int ossl_uint_set_query(const UINT_SET *s, uint64_t v); + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h index 85ae8d58..09712345 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/asn1.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -158,7 +158,7 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -999,6 +999,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h.in index d478bc96..798b2211 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/asn1.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -135,7 +135,7 @@ extern "C" { -} -# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +# define ASN1_STRING_FLAG_BITS_LEFT 0x08 /* Set if 0x07 has bits left value */ /* * This indicates that the ASN1_STRING is not a real value but just a place * holder for the location where indefinite length constructed data should be @@ -832,6 +832,8 @@ int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, unsigned char *data, int max_len); void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); +void *ASN1_item_unpack_ex(const ASN1_STRING *oct, const ASN1_ITEM *it, + OSSL_LIB_CTX *libctx, const char *propq); ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, ASN1_OCTET_STRING **oct); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/async.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/async.h index bc27d5db..826ffb99 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/async.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/async.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -80,6 +80,14 @@ int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); int ASYNC_is_capable(void); +typedef void *(*ASYNC_stack_alloc_fn)(size_t *num); +typedef void (*ASYNC_stack_free_fn)(void *addr); + +int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn, + ASYNC_stack_free_fn free_fn); +void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn, + ASYNC_stack_free_fn *free_fn); + int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, int (*func)(void *), void *args, size_t size); int ASYNC_pause_job(void); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h index e16cf622..ea584def 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/bio.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -67,6 +67,8 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) #define BIO_TYPE_START 128 @@ -171,6 +173,30 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -208,7 +234,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -256,12 +282,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -362,6 +390,34 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -428,10 +484,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -452,7 +515,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -469,6 +536,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -596,8 +664,30 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -640,10 +730,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -667,6 +765,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -686,6 +787,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -704,6 +806,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -726,6 +829,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -788,6 +893,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -805,6 +911,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -856,18 +967,30 @@ int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, - int (*gets) (BIO *, char *, int)); + int (*ossl_gets) (BIO *, char *, int)); long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h.in index c521e41e..418d1197 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bio.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -68,6 +68,8 @@ extern "C" { # define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) # endif # define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_PAIR (26|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_DGRAM_MEM (27|BIO_TYPE_SOURCE_SINK) #define BIO_TYPE_START 128 @@ -172,6 +174,30 @@ extern "C" { # define BIO_CTRL_SET_INDENT 80 # define BIO_CTRL_GET_INDENT 81 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP 82 +# define BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE 83 +# define BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE 84 +# define BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS 85 +# define BIO_CTRL_DGRAM_GET_CAPS 86 +# define BIO_CTRL_DGRAM_SET_CAPS 87 +# define BIO_CTRL_DGRAM_GET_NO_TRUNC 88 +# define BIO_CTRL_DGRAM_SET_NO_TRUNC 89 + +/* + * internal BIO: + * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 + */ + +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 + +# define BIO_DGRAM_CAP_NONE 0U +# define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) +# define BIO_DGRAM_CAP_HANDLES_DST_ADDR (1U << 1) +# define BIO_DGRAM_CAP_PROVIDES_SRC_ADDR (1U << 2) +# define BIO_DGRAM_CAP_PROVIDES_DST_ADDR (1U << 3) + # ifndef OPENSSL_NO_KTLS # define BIO_get_ktls_send(b) \ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) @@ -209,7 +235,7 @@ extern "C" { # define BIO_FLAGS_NONCLEAR_RST 0x400 # define BIO_FLAGS_IN_EOF 0x800 -/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ +/* the BIO FLAGS values 0x1000 to 0x8000 are reserved for internal KTLS flags */ typedef union bio_addr_st BIO_ADDR; typedef struct bio_addrinfo_st BIO_ADDRINFO; @@ -257,12 +283,14 @@ void BIO_clear_flags(BIO *b, int flags); # define BIO_RR_ACCEPT 0x03 /* These are passed by the BIO callback */ -# define BIO_CB_FREE 0x01 -# define BIO_CB_READ 0x02 -# define BIO_CB_WRITE 0x03 -# define BIO_CB_PUTS 0x04 -# define BIO_CB_GETS 0x05 -# define BIO_CB_CTRL 0x06 +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 +# define BIO_CB_RECVMMSG 0x07 +# define BIO_CB_SENDMMSG 0x08 /* * The callback is called before and after the underling operation, The @@ -339,6 +367,34 @@ struct bio_dgram_sctp_prinfo { }; # endif +/* BIO_sendmmsg/BIO_recvmmsg-related definitions */ +typedef struct bio_msg_st { + void *data; + size_t data_len; + BIO_ADDR *peer, *local; + uint64_t flags; +} BIO_MSG; + +typedef struct bio_mmsg_cb_args_st { + BIO_MSG *msg; + size_t stride, num_msg; + uint64_t flags; + size_t *msgs_processed; +} BIO_MMSG_CB_ARGS; + +#define BIO_POLL_DESCRIPTOR_TYPE_NONE 0 +#define BIO_POLL_DESCRIPTOR_TYPE_SOCK_FD 1 +#define BIO_POLL_DESCRIPTOR_CUSTOM_START 8192 + +typedef struct bio_poll_descriptor_st { + uint32_t type; + union { + int fd; + void *custom; + uintptr_t custom_ui; + } value; +} BIO_POLL_DESCRIPTOR; + /* * #define BIO_CONN_get_param_hostname BIO_ctrl */ @@ -405,10 +461,17 @@ struct bio_dgram_sctp_prinfo { # define BIO_C_SET_CONNECT_MODE 155 +# define BIO_C_SET_TFO 156 /* like BIO_C_SET_NBIO */ + +# define BIO_C_SET_SOCK_TYPE 157 +# define BIO_C_GET_SOCK_TYPE 158 +# define BIO_C_GET_DGRAM_BIO 159 + # define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) # define BIO_get_app_data(s) BIO_get_ex_data(s,0) -# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) +# define BIO_set_tfo(b,n) BIO_ctrl(b,BIO_C_SET_TFO,(n),NULL) # ifndef OPENSSL_NO_SOCK /* IP families we support, for BIO_s_connect() and BIO_s_accept() */ @@ -429,7 +492,11 @@ struct bio_dgram_sctp_prinfo { # define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) # define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) # define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_get_conn_mode(b) BIO_ctrl(b,BIO_C_GET_CONNECT,4,NULL) # define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) +# define BIO_set_sock_type(b,t) BIO_ctrl(b,BIO_C_SET_SOCK_TYPE,(t),NULL) +# define BIO_get_sock_type(b) BIO_ctrl(b,BIO_C_GET_SOCK_TYPE,0,NULL) +# define BIO_get0_dgram_bio(b, p) BIO_ctrl(b,BIO_C_GET_DGRAM_BIO,0,(void *)(BIO **)(p)) /* BIO_s_accept() */ # define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ @@ -446,6 +513,7 @@ struct bio_dgram_sctp_prinfo { (char *)(bio)) # define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) # define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) +# define BIO_set_tfo_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,5,(n)?(void *)"a":NULL) /* Aliases kept for backward compatibility */ # define BIO_BIND_NORMAL 0 @@ -573,8 +641,30 @@ int BIO_ctrl_reset_read_request(BIO *b); (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) # define BIO_dgram_set_peer(b,peer) \ (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_detect_peer_addr(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_DETECT_PEER_ADDR, 0, (char *)(peer)) # define BIO_dgram_get_mtu_overhead(b) \ (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) +# define BIO_dgram_get_local_addr_cap(b) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_CAP, 0, NULL) +# define BIO_dgram_get_local_addr_enable(b, penable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_LOCAL_ADDR_ENABLE, 0, (char *)(penable)) +# define BIO_dgram_set_local_addr_enable(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_LOCAL_ADDR_ENABLE, (enable), NULL) +# define BIO_dgram_get_effective_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_EFFECTIVE_CAPS, 0, NULL) +# define BIO_dgram_get_caps(b) \ + (uint32_t)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_CAPS, 0, NULL) +# define BIO_dgram_set_caps(b, caps) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_CAPS, (long)(caps), NULL) +# define BIO_dgram_get_no_trunc(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_NO_TRUNC, 0, NULL) +# define BIO_dgram_set_no_trunc(b, enable) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_NO_TRUNC, (enable), NULL) +# define BIO_dgram_get_mtu(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU, 0, NULL) +# define BIO_dgram_set_mtu(b, mtu) \ + (int)BIO_ctrl((b), BIO_CTRL_DGRAM_SET_MTU, (mtu), NULL) /* ctrl macros for BIO_f_prefix */ # define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) @@ -617,10 +707,18 @@ void BIO_vfree(BIO *a); int BIO_up_ref(BIO *a); int BIO_read(BIO *b, void *data, int dlen); int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +__owur int BIO_recvmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); int BIO_gets(BIO *bp, char *buf, int size); int BIO_get_line(BIO *bio, char *buf, int size); int BIO_write(BIO *b, const void *data, int dlen); int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +__owur int BIO_sendmmsg(BIO *b, BIO_MSG *msg, + size_t stride, size_t num_msg, uint64_t flags, + size_t *msgs_processed); +__owur int BIO_get_rpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); +__owur int BIO_get_wpoll_descriptor(BIO *b, BIO_POLL_DESCRIPTOR *desc); int BIO_puts(BIO *bp, const char *buf); int BIO_indent(BIO *b, int indent, int max); long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); @@ -644,6 +742,9 @@ int BIO_nwrite0(BIO *bio, char **buf); int BIO_nwrite(BIO *bio, char **buf, int num); const BIO_METHOD *BIO_s_mem(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_mem(void); +# endif const BIO_METHOD *BIO_s_secmem(void); BIO *BIO_new_mem_buf(const void *buf, int len); # ifndef OPENSSL_NO_SOCK @@ -663,6 +764,7 @@ const BIO_METHOD *BIO_f_nbio_test(void); const BIO_METHOD *BIO_f_prefix(void); const BIO_METHOD *BIO_s_core(void); # ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_dgram_pair(void); const BIO_METHOD *BIO_s_datagram(void); int BIO_dgram_non_fatal_error(int error); BIO *BIO_new_dgram(int fd, int close_flag); @@ -681,6 +783,7 @@ int BIO_dgram_sctp_msg_waiting(BIO *b); # ifndef OPENSSL_NO_SOCK int BIO_sock_should_retry(int i); int BIO_sock_non_fatal_error(int error); +int BIO_err_is_non_fatal(unsigned int errcode); int BIO_socket_wait(int fd, int for_read, time_t max_time); # endif int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); @@ -703,6 +806,8 @@ int BIO_hex_string(BIO *out, int indent, int width, const void *data, # ifndef OPENSSL_NO_SOCK BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_copy(BIO_ADDR *dst, const BIO_ADDR *src); +BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap); int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, const void *where, size_t wherelen, unsigned short port); void BIO_ADDR_free(BIO_ADDR *); @@ -765,6 +870,7 @@ int BIO_sock_info(int sock, # define BIO_SOCK_KEEPALIVE 0x04 # define BIO_SOCK_NONBLOCK 0x08 # define BIO_SOCK_NODELAY 0x10 +# define BIO_SOCK_TFO 0x20 int BIO_socket(int domain, int socktype, int protocol, int options); int BIO_connect(int sock, const BIO_ADDR *addr, int options); @@ -782,6 +888,11 @@ BIO *BIO_new_fd(int fd, int close_flag); int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); +# ifndef OPENSSL_NO_DGRAM +int BIO_new_bio_dgram_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +# endif + /* * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default @@ -833,18 +944,30 @@ int BIO_meth_set_write(BIO_METHOD *biom, int (*write) (BIO *, const char *, int)); int BIO_meth_set_write_ex(BIO_METHOD *biom, int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int BIO_meth_set_sendmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_sendmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); int BIO_meth_set_read(BIO_METHOD *biom, int (*read) (BIO *, char *, int)); int BIO_meth_set_read_ex(BIO_METHOD *biom, int (*bread) (BIO *, char *, size_t, size_t *)); +int BIO_meth_set_recvmmsg(BIO_METHOD *biom, + int (*f) (BIO *, BIO_MSG *, size_t, size_t, + uint64_t, size_t *)); +int (*BIO_meth_get_recvmmsg(const BIO_METHOD *biom))(BIO *, BIO_MSG *, + size_t, size_t, + uint64_t, size_t *); int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); int BIO_meth_set_puts(BIO_METHOD *biom, int (*puts) (BIO *, const char *)); int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); int BIO_meth_set_gets(BIO_METHOD *biom, - int (*gets) (BIO *, char *, int)); + int (*ossl_gets) (BIO *, char *, int)); long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); int BIO_meth_set_ctrl(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *)); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bioerr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bioerr.h index 787b30af..e4fdb649 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bioerr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bioerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -37,14 +37,18 @@ # define BIO_R_IN_USE 123 # define BIO_R_LENGTH_TOO_LONG 102 # define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOCAL_ADDR_NOT_AVAILABLE 111 # define BIO_R_LOOKUP_RETURNED_NOTHING 142 # define BIO_R_MALFORMED_HOST_OR_SERVICE 130 # define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NON_FATAL 112 # define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 # define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 # define BIO_R_NO_PORT_DEFINED 113 # define BIO_R_NO_SUCH_FILE 128 # define BIO_R_NULL_PARAMETER 115 /* unused */ +# define BIO_R_TFO_DISABLED 106 +# define BIO_R_TFO_NO_KERNEL_SUPPORT 108 # define BIO_R_TRANSFER_ERROR 104 # define BIO_R_TRANSFER_TIMEOUT 105 # define BIO_R_UNABLE_TO_BIND_SOCKET 117 @@ -53,6 +57,7 @@ # define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 # define BIO_R_UNABLE_TO_NODELAY 138 # define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNABLE_TO_TFO 109 # define BIO_R_UNAVAILABLE_IP_FAMILY 145 # define BIO_R_UNINITIALIZED 120 # define BIO_R_UNKNOWN_INFO_TYPE 140 @@ -61,5 +66,7 @@ # define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 # define BIO_R_WRITE_TO_READ_ONLY_BIO 126 # define BIO_R_WSASTARTUP 122 +# define BIO_R_PORT_MISMATCH 150 +# define BIO_R_PEER_ADDR_NOT_AVAILABLE 151 #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bn.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bn.h index 27b127a5..ea706dca 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bn.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/bn.h @@ -241,12 +241,18 @@ void BN_clear_free(BIGNUM *a); BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); void BN_swap(BIGNUM *a, BIGNUM *b); BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_bin2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2bin(const BIGNUM *a, unsigned char *to); int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret); +BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen); +int BN_signed_bn2native(const BIGNUM *a, unsigned char *to, int tolen); BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); int BN_bn2mpi(const BIGNUM *a, unsigned char *to); int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h index 49825570..60beffd5 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h @@ -35,7 +35,9 @@ extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -137,7 +139,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -203,8 +204,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -378,18 +379,35 @@ ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -420,9 +438,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -432,7 +452,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -454,6 +476,7 @@ int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -477,6 +500,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -517,8 +541,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -590,6 +616,12 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h.in index fb5ae671..5bd8beb5 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmp.h.in @@ -36,7 +36,9 @@ use OpenSSL::stackhash qw(generate_stack_macros); extern "C" { # endif -# define OSSL_CMP_PVNO 2 +# define OSSL_CMP_PVNO_2 2 +# define OSSL_CMP_PVNO_3 3 +# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */ /*- * PKIFailureInfo ::= BIT STRING { @@ -138,7 +140,6 @@ extern "C" { # if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX # error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int # endif - typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) @@ -204,8 +205,8 @@ typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; # define OSSL_CMP_PKISTATUS_revocationWarning 4 # define OSSL_CMP_PKISTATUS_revocationNotification 5 # define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 - typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; + DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) # define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 @@ -259,18 +260,35 @@ ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, OSSL_CMP_ITAV *itav); void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts); +int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out); + +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert); +int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out); +OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew, + const X509 *newWithOld, + const X509 *oldWithNew); +int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav, + X509 **newWithNew, + X509 **newWithOld, + X509 **oldWithNew); + void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); /* from cmp_ctx.c */ OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); +OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx); +const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx); /* CMP general options: */ # define OSSL_CMP_OPT_LOG_VERBOSITY 0 /* CMP transfer options: */ -# define OSSL_CMP_OPT_KEEP_ALIVE 10 -# define OSSL_CMP_OPT_MSG_TIMEOUT 11 +# define OSSL_CMP_OPT_KEEP_ALIVE 10 +# define OSSL_CMP_OPT_MSG_TIMEOUT 11 # define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 +# define OSSL_CMP_OPT_USE_TLS 13 /* CMP request options: */ # define OSSL_CMP_OPT_VALIDITY_DAYS 20 # define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 @@ -301,9 +319,11 @@ int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); +# ifndef OPENSSL_NO_HTTP int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); +# endif typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); @@ -313,7 +333,9 @@ void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); +# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); +# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); /* client authentication: */ @@ -335,6 +357,7 @@ int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); +int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn); int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, const GENERAL_NAME *name); @@ -358,6 +381,7 @@ int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); # define OSSL_CMP_PKISI_BUFLEN 1024 +X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx); X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); @@ -398,8 +422,10 @@ int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, X509_STORE *trusted_store, X509 *cert); /* from cmp_http.c */ +# ifndef OPENSSL_NO_HTTP OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *req); +# endif /* from cmp_server.c */ typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; @@ -471,6 +497,12 @@ int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); +/* from cmp_genm.c */ +int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out); +int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx, + const X509 *oldWithOld, X509 **newWithNew, + X509 **newWithOld, X509 **oldWithNew); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmperr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmperr.h index 49fd5e39..57a6effb 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmperr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmperr.h @@ -59,8 +59,11 @@ # define CMP_R_FAILED_EXTRACTING_PUBKEY 141 # define CMP_R_FAILURE_OBTAINING_RANDOM 110 # define CMP_R_FAIL_INFO_OUT_OF_RANGE 129 +# define CMP_R_GETTING_GENP 192 # define CMP_R_INVALID_ARGS 100 +# define CMP_R_INVALID_GENP 193 # define CMP_R_INVALID_OPTION 174 +# define CMP_R_INVALID_ROOTCAKEYUPDATE 195 # define CMP_R_MISSING_CERTID 165 # define CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION 130 # define CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE 142 @@ -94,6 +97,7 @@ # define CMP_R_TOTAL_TIMEOUT 184 # define CMP_R_TRANSACTIONID_UNMATCHED 152 # define CMP_R_TRANSFER_ERROR 159 +# define CMP_R_UNCLEAN_CTX 191 # define CMP_R_UNEXPECTED_PKIBODY 133 # define CMP_R_UNEXPECTED_PKISTATUS 185 # define CMP_R_UNEXPECTED_PVNO 153 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h index 3b453e6a..fe86a5c7 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/cms.h.in * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -31,8 +31,10 @@ extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -147,6 +149,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, #define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) @@ -217,13 +221,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -233,27 +240,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -272,7 +278,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -291,12 +297,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -385,6 +395,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -441,7 +456,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h.in index da20ddf2..23966770 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cms.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -32,8 +32,10 @@ use OpenSSL::stackhash qw(generate_stack_macros); extern "C" { # endif +typedef struct CMS_EnvelopedData_st CMS_EnvelopedData; typedef struct CMS_ContentInfo_st CMS_ContentInfo; typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_SignedData_st CMS_SignedData; typedef struct CMS_CertificateChoices CMS_CertificateChoices; typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; @@ -49,6 +51,8 @@ typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; .generate_stack_macros("CMS_RevocationInfoChoice"); -} +DECLARE_ASN1_ITEM(CMS_EnvelopedData) +DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData) DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) @@ -119,13 +123,16 @@ int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, unsigned int flags); +int CMS_final_digest(CMS_ContentInfo *cms, + const unsigned char *md, unsigned int mdlen, BIO *dcont, + unsigned int flags); CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, unsigned int flags); CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, @@ -135,27 +142,26 @@ CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si, int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags); CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out, unsigned int flags); CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md, unsigned int flags); CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, - unsigned int flags, OSSL_LIB_CTX *ctx, + unsigned int flags, OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms, const unsigned char *key, size_t keylen, BIO *dcont, BIO *out, unsigned int flags); - CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags); CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, const unsigned char *key, size_t keylen, unsigned int flags, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph, @@ -174,7 +180,7 @@ CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags); CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, unsigned int flags, - OSSL_LIB_CTX *ctx, const char *propq); + OSSL_LIB_CTX *libctx, const char *propq); int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); @@ -193,12 +199,16 @@ int CMS_RecipientInfo_type(CMS_RecipientInfo *ri); EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri); CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo * -CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, +CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx, const char *propq); CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, - OSSL_LIB_CTX *ctx, + OSSL_LIB_CTX *libctx, const char *propq); +BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data, + EVP_PKEY *pkey, X509 *cert, + ASN1_OCTET_STRING *secret, unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags); @@ -287,6 +297,11 @@ ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); int CMS_SignerInfo_sign(CMS_SignerInfo *si); int CMS_SignerInfo_verify(CMS_SignerInfo *si); int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); +BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data, + STACK_OF(X509) *scerts, X509_STORE *store, + STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls, + unsigned int flags, + OSSL_LIB_CTX *libctx, const char *propq); int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, @@ -343,7 +358,7 @@ CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo, - OSSL_LIB_CTX *ctx); + OSSL_LIB_CTX *libctx); int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr); void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmserr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmserr.h index f2d7708f..887035b1 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmserr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/cmserr.h @@ -86,6 +86,7 @@ # define CMS_R_NO_PUBLIC_KEY 134 # define CMS_R_NO_RECEIPT_REQUEST 168 # define CMS_R_NO_SIGNERS 135 +# define CMS_R_OPERATION_UNSUPPORTED 182 # define CMS_R_PEER_KEY_ERROR 188 # define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 # define CMS_R_RECEIPT_DECODE_ERROR 169 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comp.h index 06ff5810..f81ba0f3 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comp.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comp.h @@ -40,15 +40,20 @@ int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, unsigned char *in, int ilen); COMP_METHOD *COMP_zlib(void); +COMP_METHOD *COMP_zlib_oneshot(void); +COMP_METHOD *COMP_brotli(void); +COMP_METHOD *COMP_brotli_oneshot(void); +COMP_METHOD *COMP_zstd(void); +COMP_METHOD *COMP_zstd_oneshot(void); #ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define COMP_zlib_cleanup() while(0) continue #endif # ifdef OPENSSL_BIO_H -# ifdef ZLIB const BIO_METHOD *BIO_f_zlib(void); -# endif +const BIO_METHOD *BIO_f_brotli(void); +const BIO_METHOD *BIO_f_zstd(void); # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comperr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comperr.h index 01dd3e6b..1948d37f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comperr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/comperr.h @@ -23,9 +23,16 @@ /* * COMP reason codes. */ +# define COMP_R_BROTLI_DECODE_ERROR 102 +# define COMP_R_BROTLI_ENCODE_ERROR 103 +# define COMP_R_BROTLI_NOT_SUPPORTED 104 # define COMP_R_ZLIB_DEFLATE_ERROR 99 # define COMP_R_ZLIB_INFLATE_ERROR 100 # define COMP_R_ZLIB_NOT_SUPPORTED 101 +# define COMP_R_ZSTD_COMPRESS_ERROR 105 +# define COMP_R_ZSTD_DECODE_ERROR 106 +# define COMP_R_ZSTD_DECOMPRESS_ERROR 107 +# define COMP_R_ZSTD_NOT_SUPPORTED 108 # endif #endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h index e8fcf315..61bb0087 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/conf.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h.in index 044b3eb5..56632870 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/conf.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h index 2ecc52f0..5bca9de4 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h @@ -30,7 +30,7 @@ extern "C" { # ifndef OPENSSL_SYS_iOS # define OPENSSL_SYS_iOS 1 # endif -# define OPENSSL_CONFIGURED_API 30100 +# define OPENSSL_CONFIGURED_API 30200 # ifndef OPENSSL_RAND_SEED_OS # define OPENSSL_RAND_SEED_OS # endif @@ -49,12 +49,21 @@ extern "C" { # ifndef OPENSSL_NO_ASYNC # define OPENSSL_NO_ASYNC # endif +# ifndef OPENSSL_NO_BROTLI +# define OPENSSL_NO_BROTLI +# endif +# ifndef OPENSSL_NO_BROTLI_DYNAMIC +# define OPENSSL_NO_BROTLI_DYNAMIC +# endif # ifndef OPENSSL_NO_CRYPTO_MDEBUG # define OPENSSL_NO_CRYPTO_MDEBUG # endif # ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE # endif +# ifndef OPENSSL_NO_DEFAULT_THREAD_POOL +# define OPENSSL_NO_DEFAULT_THREAD_POOL +# endif # ifndef OPENSSL_NO_DEVCRYPTOENG # define OPENSSL_NO_DEVCRYPTOENG # endif @@ -103,6 +112,12 @@ extern "C" { # ifndef OPENSSL_NO_TESTS # define OPENSSL_NO_TESTS # endif +# ifndef OPENSSL_NO_TFO +# define OPENSSL_NO_TFO +# endif +# ifndef OPENSSL_NO_THREAD_POOL +# define OPENSSL_NO_THREAD_POOL +# endif # ifndef OPENSSL_NO_TRACE # define OPENSSL_NO_TRACE # endif @@ -118,6 +133,21 @@ extern "C" { # ifndef OPENSSL_NO_WEAK_SSL_CIPHERS # define OPENSSL_NO_WEAK_SSL_CIPHERS # endif +# ifndef OPENSSL_NO_WINSTORE +# define OPENSSL_NO_WINSTORE +# endif +# ifndef OPENSSL_NO_ZLIB +# define OPENSSL_NO_ZLIB +# endif +# ifndef OPENSSL_NO_ZLIB_DYNAMIC +# define OPENSSL_NO_ZLIB_DYNAMIC +# endif +# ifndef OPENSSL_NO_ZSTD +# define OPENSSL_NO_ZSTD +# endif +# ifndef OPENSSL_NO_ZSTD_DYNAMIC +# define OPENSSL_NO_ZSTD_DYNAMIC +# endif # ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE # endif @@ -139,6 +169,12 @@ extern "C" { # define RC4_INT unsigned char +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h.in index b84dc1df..86077d0a 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/configuration.h.in @@ -62,6 +62,12 @@ extern "C" { # define RC4_INT {- $config{rc4_int} -} +# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB)) +# define OPENSSL_NO_COMP_ALG +# else +# undef OPENSSL_NO_COMP_ALG +# endif + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core.h index 9683ac70..18c19918 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -42,6 +42,9 @@ struct ossl_dispatch_st { void (*function)(void); }; +# define OSSL_DISPATCH_END \ + { 0, NULL } + /* * Other items, essentially an int<->pointer map element. * diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_dispatch.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_dispatch.h index 61d75a38..9b03f20c 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_dispatch.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_dispatch.h @@ -661,6 +661,14 @@ OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types, OSSL_CORE_MAKE_FUNC(void *, keymgmt_dup, (const void *keydata_from, int selection)) +/* Extended import and export functions */ +# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45 +# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46 +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex, + (void *provctx, int selection)) +OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex, + (void *provctx, int selection)) + /* Key Exchange */ # define OSSL_FUNC_KEYEXCH_NEWCTX 1 @@ -832,16 +840,24 @@ OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_settable_ctx_params, # define OSSL_FUNC_KEM_GETTABLE_CTX_PARAMS 9 # define OSSL_FUNC_KEM_SET_CTX_PARAMS 10 # define OSSL_FUNC_KEM_SETTABLE_CTX_PARAMS 11 +# define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12 +# define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13 OSSL_CORE_MAKE_FUNC(void *, kem_newctx, (void *provctx)) OSSL_CORE_MAKE_FUNC(int, kem_encapsulate_init, (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kem_auth_encapsulate_init, (void *ctx, void *provkey, + void *authprivkey, + const OSSL_PARAM params[])) OSSL_CORE_MAKE_FUNC(int, kem_encapsulate, (void *ctx, unsigned char *out, size_t *outlen, unsigned char *secret, size_t *secretlen)) OSSL_CORE_MAKE_FUNC(int, kem_decapsulate_init, (void *ctx, void *provkey, const OSSL_PARAM params[])) +OSSL_CORE_MAKE_FUNC(int, kem_auth_decapsulate_init, (void *ctx, void *provkey, + void *authpubkey, + const OSSL_PARAM params[])) OSSL_CORE_MAKE_FUNC(int, kem_decapsulate, (void *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen)) @@ -937,6 +953,8 @@ OSSL_CORE_MAKE_FUNC(int, decoder_export_object, #define OSSL_FUNC_STORE_EOF 6 #define OSSL_FUNC_STORE_CLOSE 7 #define OSSL_FUNC_STORE_EXPORT_OBJECT 8 +#define OSSL_FUNC_STORE_DELETE 9 +#define OSSL_FUNC_STORE_OPEN_EX 10 OSSL_CORE_MAKE_FUNC(void *, store_open, (void *provctx, const char *uri)) OSSL_CORE_MAKE_FUNC(void *, store_attach, (void *provctx, OSSL_CORE_BIO *in)) OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, store_settable_ctx_params, @@ -952,6 +970,12 @@ OSSL_CORE_MAKE_FUNC(int, store_close, (void *loaderctx)) OSSL_CORE_MAKE_FUNC(int, store_export_object, (void *loaderctx, const void *objref, size_t objref_sz, OSSL_CALLBACK *export_cb, void *export_cbarg)) +OSSL_CORE_MAKE_FUNC(int, store_delete, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) +OSSL_CORE_MAKE_FUNC(void *, store_open_ex, + (void *provctx, const char *uri, const OSSL_PARAM params[], + OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg)) # ifdef __cplusplus } diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h index 0a6ec1bb..ffffe90f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h @@ -1,4 +1,7 @@ /* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/core_names.h.in + * * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -7,6 +10,7 @@ * https://www.openssl.org/source/license.html */ + #ifndef OPENSSL_CORE_NAMES_H # define OPENSSL_CORE_NAMES_H # pragma once @@ -15,544 +19,454 @@ extern "C" { # endif -/* Well known parameter names that core passes to providers */ -#define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" /* utf8_ptr */ -#define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" /* utf8_ptr */ -#define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" /* utf8_ptr */ - -/* Well known parameter names that Providers can define */ -#define OSSL_PROV_PARAM_NAME "name" /* utf8_ptr */ -#define OSSL_PROV_PARAM_VERSION "version" /* utf8_ptr */ -#define OSSL_PROV_PARAM_BUILDINFO "buildinfo" /* utf8_ptr */ -#define OSSL_PROV_PARAM_STATUS "status" /* uint */ -#define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" /* uint */ -#define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" /* uint */ -#define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" /* uint */ - -/* Self test callback parameters */ -#define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" /* utf8_string */ -#define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" /* utf8_string */ -#define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" /* utf8_string */ - -/*- - * Provider-native object abstractions - * - * These are used when a provider wants to pass object data or an object - * reference back to libcrypto. This is only useful for provider functions - * that take a callback to which an OSSL_PARAM array with these parameters - * can be passed. - * - * This set of parameter names is explained in detail in provider-object(7) - * (doc/man7/provider-object.pod) - */ -#define OSSL_OBJECT_PARAM_TYPE "type" /* INTEGER */ -#define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" /* UTF8_STRING */ -#define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" /* UTF8_STRING */ -#define OSSL_OBJECT_PARAM_REFERENCE "reference" /* OCTET_STRING */ -#define OSSL_OBJECT_PARAM_DATA "data" /* OCTET_STRING or UTF8_STRING */ -#define OSSL_OBJECT_PARAM_DESC "desc" /* UTF8_STRING */ - -/* - * Algorithm parameters - * If "engine" or "properties" are specified, they should always be paired - * with the algorithm type. - * Note these are common names that are shared by many types (such as kdf, mac, - * and pkey) e.g: see OSSL_MAC_PARAM_DIGEST below. - */ -#define OSSL_ALG_PARAM_DIGEST "digest" /* utf8_string */ -#define OSSL_ALG_PARAM_CIPHER "cipher" /* utf8_string */ -#define OSSL_ALG_PARAM_ENGINE "engine" /* utf8_string */ -#define OSSL_ALG_PARAM_MAC "mac" /* utf8_string */ -#define OSSL_ALG_PARAM_PROPERTIES "properties"/* utf8_string */ - -/* cipher parameters */ -#define OSSL_CIPHER_PARAM_PADDING "padding" /* uint */ -#define OSSL_CIPHER_PARAM_USE_BITS "use-bits" /* uint */ -#define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" /* uint */ -#define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" /* octet_ptr */ -#define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" /* size_t */ -#define OSSL_CIPHER_PARAM_MODE "mode" /* uint */ -#define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" /* size_t */ -#define OSSL_CIPHER_PARAM_AEAD "aead" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_CTS "cts" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" /* int, 0 or 1 */ -#define OSSL_CIPHER_PARAM_KEYLEN "keylen" /* size_t */ -#define OSSL_CIPHER_PARAM_IVLEN "ivlen" /* size_t */ -#define OSSL_CIPHER_PARAM_IV "iv" /* octet_string OR octet_ptr */ -#define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" /* octet_string OR octet_ptr */ -#define OSSL_CIPHER_PARAM_NUM "num" /* uint */ -#define OSSL_CIPHER_PARAM_ROUNDS "rounds" /* uint */ -#define OSSL_CIPHER_PARAM_AEAD_TAG "tag" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" /* size_t */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" /* octet_string */ -#define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN -#define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" /* size_t */ -#define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" /* octet_string */ -#define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" /* octet_string */ -#define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" /* size_t */ -#define OSSL_CIPHER_PARAM_SPEED "speed" /* uint */ -#define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" /* utf8_string */ -/* For passing the AlgorithmIdentifier parameter in DER form */ -#define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param" /* octet_string */ - -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT \ - "tls1multi_maxsndfrag" /* uint */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE \ - "tls1multi_maxbufsz" /* size_t */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE \ - "tls1multi_interleave" /* uint */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD \ - "tls1multi_aad" /* octet_string */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN \ - "tls1multi_aadpacklen" /* uint */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC \ - "tls1multi_enc" /* octet_string */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN \ - "tls1multi_encin" /* octet_string */ -#define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN \ - "tls1multi_enclen" /* size_t */ - /* OSSL_CIPHER_PARAM_CTS_MODE Values */ -#define OSSL_CIPHER_CTS_MODE_CS1 "CS1" -#define OSSL_CIPHER_CTS_MODE_CS2 "CS2" -#define OSSL_CIPHER_CTS_MODE_CS3 "CS3" +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" -/* digest parameters */ -#define OSSL_DIGEST_PARAM_XOFLEN "xoflen" /* size_t */ -#define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" /* octet string */ -#define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" /* uint */ -#define OSSL_DIGEST_PARAM_MICALG "micalg" /* utf8 string */ -#define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" /* size_t */ -#define OSSL_DIGEST_PARAM_SIZE "size" /* size_t */ -#define OSSL_DIGEST_PARAM_XOF "xof" /* int, 0 or 1 */ -#define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" /* int, 0 or 1 */ +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" /* Known DIGEST names (not a complete list) */ -#define OSSL_DIGEST_NAME_MD5 "MD5" -#define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" -#define OSSL_DIGEST_NAME_SHA1 "SHA1" -#define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" -#define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" -#define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" -#define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" -#define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" -#define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" -#define OSSL_DIGEST_NAME_MD2 "MD2" -#define OSSL_DIGEST_NAME_MD4 "MD4" -#define OSSL_DIGEST_NAME_MDC2 "MDC2" -#define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" -#define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" -#define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" -#define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" -#define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" -#define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" -#define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" -#define OSSL_DIGEST_NAME_SM3 "SM3" - -/* MAC parameters */ -#define OSSL_MAC_PARAM_KEY "key" /* octet string */ -#define OSSL_MAC_PARAM_IV "iv" /* octet string */ -#define OSSL_MAC_PARAM_CUSTOM "custom" /* utf8 string */ -#define OSSL_MAC_PARAM_SALT "salt" /* octet string */ -#define OSSL_MAC_PARAM_XOF "xof" /* int, 0 or 1 */ -#define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" /* int, 0 or 1 */ -#define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" /* int, 0 or 1 */ -#define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" /* unsigned int */ -#define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" /* unsigned int */ - -/* - * If "engine" or "properties" are specified, they should always be paired - * with "cipher" or "digest". - */ -#define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ -#define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */ -#define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */ -#define OSSL_MAC_PARAM_SIZE "size" /* size_t */ -#define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" /* size_t */ -#define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" /* size_t */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" /* Known MAC names */ -#define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" -#define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" -#define OSSL_MAC_NAME_CMAC "CMAC" -#define OSSL_MAC_NAME_GMAC "GMAC" -#define OSSL_MAC_NAME_HMAC "HMAC" -#define OSSL_MAC_NAME_KMAC128 "KMAC128" -#define OSSL_MAC_NAME_KMAC256 "KMAC256" -#define OSSL_MAC_NAME_POLY1305 "POLY1305" -#define OSSL_MAC_NAME_SIPHASH "SIPHASH" - -/* KDF / PRF parameters */ -#define OSSL_KDF_PARAM_SECRET "secret" /* octet string */ -#define OSSL_KDF_PARAM_KEY "key" /* octet string */ -#define OSSL_KDF_PARAM_SALT "salt" /* octet string */ -#define OSSL_KDF_PARAM_PASSWORD "pass" /* octet string */ -#define OSSL_KDF_PARAM_PREFIX "prefix" /* octet string */ -#define OSSL_KDF_PARAM_LABEL "label" /* octet string */ -#define OSSL_KDF_PARAM_DATA "data" /* octet string */ -#define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST /* utf8 string */ -#define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ -#define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC /* utf8 string */ -#define OSSL_KDF_PARAM_MAC_SIZE "maclen" /* size_t */ -#define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES /* utf8 string */ -#define OSSL_KDF_PARAM_ITER "iter" /* unsigned int */ -#define OSSL_KDF_PARAM_MODE "mode" /* utf8 string or int */ -#define OSSL_KDF_PARAM_PKCS5 "pkcs5" /* int */ -#define OSSL_KDF_PARAM_UKM "ukm" /* octet string */ -#define OSSL_KDF_PARAM_CEK_ALG "cekalg" /* utf8 string */ -#define OSSL_KDF_PARAM_SCRYPT_N "n" /* uint64_t */ -#define OSSL_KDF_PARAM_SCRYPT_R "r" /* uint32_t */ -#define OSSL_KDF_PARAM_SCRYPT_P "p" /* uint32_t */ -#define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" /* uint64_t */ -#define OSSL_KDF_PARAM_INFO "info" /* octet string */ -#define OSSL_KDF_PARAM_SEED "seed" /* octet string */ -#define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" /* octet string */ -#define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" /* octet string */ -#define OSSL_KDF_PARAM_SSHKDF_TYPE "type" /* int */ -#define OSSL_KDF_PARAM_SIZE "size" /* size_t */ -#define OSSL_KDF_PARAM_CONSTANT "constant" /* octet string */ -#define OSSL_KDF_PARAM_PKCS12_ID "id" /* int */ -#define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" /* int */ -#define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" /* int */ -#define OSSL_KDF_PARAM_KBKDF_R "r" /* int */ -#define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" -#define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" -#define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" -#define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" -#define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" -#define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" /* Known KDF names */ -#define OSSL_KDF_NAME_HKDF "HKDF" -#define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" -#define OSSL_KDF_NAME_PBKDF1 "PBKDF1" -#define OSSL_KDF_NAME_PBKDF2 "PBKDF2" -#define OSSL_KDF_NAME_SCRYPT "SCRYPT" -#define OSSL_KDF_NAME_SSHKDF "SSHKDF" -#define OSSL_KDF_NAME_SSKDF "SSKDF" -#define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" -#define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" -#define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" -#define OSSL_KDF_NAME_X963KDF "X963KDF" -#define OSSL_KDF_NAME_KBKDF "KBKDF" -#define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" - -/* Known RAND names */ -#define OSSL_RAND_PARAM_STATE "state" -#define OSSL_RAND_PARAM_STRENGTH "strength" -#define OSSL_RAND_PARAM_MAX_REQUEST "max_request" -#define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" -#define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" -#define OSSL_RAND_PARAM_GENERATE "generate" - -/* RAND/DRBG names */ -#define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" -#define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" -#define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" -#define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" -#define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" -#define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" -#define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" -#define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" -#define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" -#define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" -#define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES -#define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST -#define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER -#define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC -#define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" - -/* DRBG call back parameters */ -#define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" -#define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" -#define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" -#define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" -#define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" -#define OSSL_DRBG_PARAM_SIZE "size" - -/* PKEY parameters */ -/* Common PKEY parameters */ -#define OSSL_PKEY_PARAM_BITS "bits" /* integer */ -#define OSSL_PKEY_PARAM_MAX_SIZE "max-size" /* integer */ -#define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" /* integer */ -#define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST -#define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER /* utf8 string */ -#define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE /* utf8 string */ -#define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES -#define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" /* utf8 string */ -#define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" /* utf8 string */ -#define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" -#define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" -#define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" -#define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" -#define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" -#define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" -#define OSSL_PKEY_PARAM_GROUP_NAME "group" -#define OSSL_PKEY_PARAM_DIST_ID "distid" -#define OSSL_PKEY_PARAM_PUB_KEY "pub" -#define OSSL_PKEY_PARAM_PRIV_KEY "priv" - -/* Diffie-Hellman/DSA Parameters */ -#define OSSL_PKEY_PARAM_FFC_P "p" -#define OSSL_PKEY_PARAM_FFC_G "g" -#define OSSL_PKEY_PARAM_FFC_Q "q" -#define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" -#define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" -#define OSSL_PKEY_PARAM_FFC_SEED "seed" -#define OSSL_PKEY_PARAM_FFC_COFACTOR "j" -#define OSSL_PKEY_PARAM_FFC_H "hindex" -#define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" -#define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" -#define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" - -/* Diffie-Hellman params */ -#define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" -#define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" - -/* Elliptic Curve Domain Parameters */ -#define OSSL_PKEY_PARAM_EC_PUB_X "qx" -#define OSSL_PKEY_PARAM_EC_PUB_Y "qy" - -/* Elliptic Curve Explicit Domain Parameters */ -#define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" -#define OSSL_PKEY_PARAM_EC_P "p" -#define OSSL_PKEY_PARAM_EC_A "a" -#define OSSL_PKEY_PARAM_EC_B "b" -#define OSSL_PKEY_PARAM_EC_GENERATOR "generator" -#define OSSL_PKEY_PARAM_EC_ORDER "order" -#define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" -#define OSSL_PKEY_PARAM_EC_SEED "seed" -#define OSSL_PKEY_PARAM_EC_CHAR2_M "m" -#define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" -#define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" -#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" -#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" -#define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" -#define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" - -/* Elliptic Curve Key Parameters */ -#define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" -#define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH \ - OSSL_PKEY_PARAM_USE_COFACTOR_FLAG - -/* RSA Keys */ -/* - * n, e, d are the usual public and private key components - * - * rsa-num is the number of factors, including p and q - * rsa-factor is used for each factor: p, q, r_i (i = 3, ...) - * rsa-exponent is used for each exponent: dP, dQ, d_i (i = 3, ...) - * rsa-coefficient is used for each coefficient: qInv, t_i (i = 3, ...) - * - * The number of rsa-factor items must be equal to the number of rsa-exponent - * items, and the number of rsa-coefficients must be one less. - * (the base i for the coefficients is 2, not 1, at least as implied by - * RFC 8017) - */ -#define OSSL_PKEY_PARAM_RSA_N "n" -#define OSSL_PKEY_PARAM_RSA_E "e" -#define OSSL_PKEY_PARAM_RSA_D "d" -#define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" -#define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" -#define OSSL_PKEY_PARAM_RSA_FACTOR1 OSSL_PKEY_PARAM_RSA_FACTOR"1" -#define OSSL_PKEY_PARAM_RSA_FACTOR2 OSSL_PKEY_PARAM_RSA_FACTOR"2" -#define OSSL_PKEY_PARAM_RSA_FACTOR3 OSSL_PKEY_PARAM_RSA_FACTOR"3" -#define OSSL_PKEY_PARAM_RSA_FACTOR4 OSSL_PKEY_PARAM_RSA_FACTOR"4" -#define OSSL_PKEY_PARAM_RSA_FACTOR5 OSSL_PKEY_PARAM_RSA_FACTOR"5" -#define OSSL_PKEY_PARAM_RSA_FACTOR6 OSSL_PKEY_PARAM_RSA_FACTOR"6" -#define OSSL_PKEY_PARAM_RSA_FACTOR7 OSSL_PKEY_PARAM_RSA_FACTOR"7" -#define OSSL_PKEY_PARAM_RSA_FACTOR8 OSSL_PKEY_PARAM_RSA_FACTOR"8" -#define OSSL_PKEY_PARAM_RSA_FACTOR9 OSSL_PKEY_PARAM_RSA_FACTOR"9" -#define OSSL_PKEY_PARAM_RSA_FACTOR10 OSSL_PKEY_PARAM_RSA_FACTOR"10" -#define OSSL_PKEY_PARAM_RSA_EXPONENT1 OSSL_PKEY_PARAM_RSA_EXPONENT"1" -#define OSSL_PKEY_PARAM_RSA_EXPONENT2 OSSL_PKEY_PARAM_RSA_EXPONENT"2" -#define OSSL_PKEY_PARAM_RSA_EXPONENT3 OSSL_PKEY_PARAM_RSA_EXPONENT"3" -#define OSSL_PKEY_PARAM_RSA_EXPONENT4 OSSL_PKEY_PARAM_RSA_EXPONENT"4" -#define OSSL_PKEY_PARAM_RSA_EXPONENT5 OSSL_PKEY_PARAM_RSA_EXPONENT"5" -#define OSSL_PKEY_PARAM_RSA_EXPONENT6 OSSL_PKEY_PARAM_RSA_EXPONENT"6" -#define OSSL_PKEY_PARAM_RSA_EXPONENT7 OSSL_PKEY_PARAM_RSA_EXPONENT"7" -#define OSSL_PKEY_PARAM_RSA_EXPONENT8 OSSL_PKEY_PARAM_RSA_EXPONENT"8" -#define OSSL_PKEY_PARAM_RSA_EXPONENT9 OSSL_PKEY_PARAM_RSA_EXPONENT"9" -#define OSSL_PKEY_PARAM_RSA_EXPONENT10 OSSL_PKEY_PARAM_RSA_EXPONENT"10" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 OSSL_PKEY_PARAM_RSA_COEFFICIENT"1" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 OSSL_PKEY_PARAM_RSA_COEFFICIENT"2" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 OSSL_PKEY_PARAM_RSA_COEFFICIENT"3" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 OSSL_PKEY_PARAM_RSA_COEFFICIENT"4" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 OSSL_PKEY_PARAM_RSA_COEFFICIENT"5" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 OSSL_PKEY_PARAM_RSA_COEFFICIENT"6" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 OSSL_PKEY_PARAM_RSA_COEFFICIENT"7" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 OSSL_PKEY_PARAM_RSA_COEFFICIENT"8" -#define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 OSSL_PKEY_PARAM_RSA_COEFFICIENT"9" +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" /* RSA padding modes */ -#define OSSL_PKEY_RSA_PAD_MODE_NONE "none" -#define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" -#define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" -#define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" -#define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" /* RSA pss padding salt length */ -#define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" -#define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" -#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" -#define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" - -/* Key generation parameters */ -#define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS -#define OSSL_PKEY_PARAM_RSA_PRIMES "primes" -#define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES -#define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC -#define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST -#define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" - -/* Key generation parameters */ -#define OSSL_PKEY_PARAM_FFC_TYPE "type" -#define OSSL_PKEY_PARAM_FFC_PBITS "pbits" -#define OSSL_PKEY_PARAM_FFC_QBITS "qbits" -#define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES - -#define OSSL_PKEY_PARAM_EC_ENCODING "encoding" /* utf8_string */ -#define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" -#define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" -#define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" /* OSSL_PKEY_PARAM_EC_ENCODING values */ -#define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" -#define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" -#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" -#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" -#define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" -#define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" -#define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" -#define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" - -/* Key Exchange parameters */ -#define OSSL_EXCHANGE_PARAM_PAD "pad" /* uint */ -#define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" /* int */ -#define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" /* utf8_string */ -#define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" /* utf8_string */ -#define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" /* utf8_string */ -#define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" /* size_t */ -/* The following parameter is an octet_string on set and an octet_ptr on get */ -#define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" - -/* Signature parameters */ -#define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id" -#define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE -#define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES -#define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" -#define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST -#define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES \ - OSSL_PKEY_PARAM_MGF1_PROPERTIES -#define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE - -/* Asym cipher parameters */ -#define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST -#define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES -#define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE -#define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE -#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST \ - OSSL_PKEY_PARAM_MGF1_DIGEST -#define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS \ - OSSL_PKEY_PARAM_MGF1_PROPERTIES -#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST -#define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" -/* The following parameter is an octet_string on set and an octet_ptr on get */ -#define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" -#define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" -#define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" - -/* - * Encoder / decoder parameters - */ -#define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER -#define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES -/* Currently PVK only, but reusable for others as needed */ -#define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" -#define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" /* integer */ - -#define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES - -/* Passphrase callback parameters */ -#define OSSL_PASSPHRASE_PARAM_INFO "info" - -/* Keygen callback parameters, from provider to libcrypto */ -#define OSSL_GEN_PARAM_POTENTIAL "potential" /* integer */ -#define OSSL_GEN_PARAM_ITERATION "iteration" /* integer */ - -/* ACVP Test parameters : These should not be used normally */ -#define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" -#define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" -#define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" -#define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" -#define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" -#define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" -#define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" -#define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" -#define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" -#define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" -#define OSSL_SIGNATURE_PARAM_KAT "kat" - -/* KEM parameters */ -#define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" /* OSSL_KEM_PARAM_OPERATION values */ #define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" -/* Capabilities */ - -/* TLS-GROUP Capability */ -#define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" -#define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" -#define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" -#define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" -#define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" -#define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" -#define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" -#define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" -#define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" -#define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" - -/*- - * storemgmt parameters - */ - -/* - * Used by storemgmt_ctx_set_params(): - * - * - OSSL_STORE_PARAM_EXPECT is an INTEGER, and the value is any of the - * OSSL_STORE_INFO numbers. This is used to set the expected type of - * object loaded. - * - * - OSSL_STORE_PARAM_SUBJECT, OSSL_STORE_PARAM_ISSUER, - * OSSL_STORE_PARAM_SERIAL, OSSL_STORE_PARAM_FINGERPRINT, - * OSSL_STORE_PARAM_DIGEST, OSSL_STORE_PARAM_ALIAS - * are used as search criteria. - * (OSSL_STORE_PARAM_DIGEST is used with OSSL_STORE_PARAM_FINGERPRINT) - */ -#define OSSL_STORE_PARAM_EXPECT "expect" /* INTEGER */ -#define OSSL_STORE_PARAM_SUBJECT "subject" /* DER blob => OCTET_STRING */ -#define OSSL_STORE_PARAM_ISSUER "name" /* DER blob => OCTET_STRING */ -#define OSSL_STORE_PARAM_SERIAL "serial" /* INTEGER */ -#define OSSL_STORE_PARAM_DIGEST "digest" /* UTF8_STRING */ -#define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" /* OCTET_STRING */ -#define OSSL_STORE_PARAM_ALIAS "alias" /* UTF8_STRING */ - -/* You may want to pass properties for the provider implementation to use */ -#define OSSL_STORE_PARAM_PROPERTIES "properties" /* utf8_string */ -/* OSSL_DECODER input type if a decoder is used by the store */ -#define OSSL_STORE_PARAM_INPUT_TYPE "input-type" /* UTF8_STRING */ +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +# define OSSL_ALG_PARAM_CIPHER "cipher" +# define OSSL_ALG_PARAM_DIGEST "digest" +# define OSSL_ALG_PARAM_ENGINE "engine" +# define OSSL_ALG_PARAM_MAC "mac" +# define OSSL_ALG_PARAM_PROPERTIES "properties" +# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE +# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props" +# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label" +# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version" +# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version" +# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg" +# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id" +# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls" +# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name" +# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal" +# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name" +# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype" +# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls" +# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name" +# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid" +# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name" +# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid" +# define OSSL_CIPHER_PARAM_AEAD "aead" +# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN +# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey" +# define OSSL_CIPHER_PARAM_AEAD_TAG "tag" +# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed" +# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv" +# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param" +# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_CIPHER_PARAM_CTS "cts" +# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode" +# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv" +# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey" +# define OSSL_CIPHER_PARAM_IV "iv" +# define OSSL_CIPHER_PARAM_IVLEN "ivlen" +# define OSSL_CIPHER_PARAM_KEYLEN "keylen" +# define OSSL_CIPHER_PARAM_MODE "mode" +# define OSSL_CIPHER_PARAM_NUM "num" +# define OSSL_CIPHER_PARAM_PADDING "padding" +# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey" +# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits" +# define OSSL_CIPHER_PARAM_ROUNDS "rounds" +# define OSSL_CIPHER_PARAM_SPEED "speed" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz" +# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag" +# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac" +# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size" +# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version" +# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv" +# define OSSL_CIPHER_PARAM_USE_BITS "use-bits" +# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard" +# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent" +# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize" +# define OSSL_DIGEST_PARAM_MICALG "micalg" +# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type" +# define OSSL_DIGEST_PARAM_SIZE "size" +# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms" +# define OSSL_DIGEST_PARAM_XOF "xof" +# define OSSL_DIGEST_PARAM_XOFLEN "xoflen" +# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required" +# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen" +# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen" +# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length" +# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen" +# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen" +# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen" +# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length" +# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen" +# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance" +# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data" +# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter" +# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests" +# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time" +# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval" +# define OSSL_DRBG_PARAM_SIZE "size" +# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function" +# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level" +# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters" +# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest" +# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props" +# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen" +# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type" +# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm" +# define OSSL_EXCHANGE_PARAM_PAD "pad" +# define OSSL_GEN_PARAM_ITERATION "iteration" +# define OSSL_GEN_PARAM_POTENTIAL "potential" +# define OSSL_KDF_PARAM_ARGON2_AD "ad" +# define OSSL_KDF_PARAM_ARGON2_LANES "lanes" +# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost" +# define OSSL_KDF_PARAM_ARGON2_VERSION "version" +# define OSSL_KDF_PARAM_CEK_ALG "cekalg" +# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_KDF_PARAM_CONSTANT "constant" +# define OSSL_KDF_PARAM_DATA "data" +# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean" +# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy" +# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce" +# define OSSL_KDF_PARAM_INFO "info" +# define OSSL_KDF_PARAM_ITER "iter" +# define OSSL_KDF_PARAM_KBKDF_R "r" +# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l" +# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator" +# define OSSL_KDF_PARAM_KEY "key" +# define OSSL_KDF_PARAM_LABEL "label" +# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC +# define OSSL_KDF_PARAM_MAC_SIZE "maclen" +# define OSSL_KDF_PARAM_MODE "mode" +# define OSSL_KDF_PARAM_PASSWORD "pass" +# define OSSL_KDF_PARAM_PKCS12_ID "id" +# define OSSL_KDF_PARAM_PKCS5 "pkcs5" +# define OSSL_KDF_PARAM_PREFIX "prefix" +# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_KDF_PARAM_SALT "salt" +# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes" +# define OSSL_KDF_PARAM_SCRYPT_N "n" +# define OSSL_KDF_PARAM_SCRYPT_P "p" +# define OSSL_KDF_PARAM_SCRYPT_R "r" +# define OSSL_KDF_PARAM_SECRET "secret" +# define OSSL_KDF_PARAM_SEED "seed" +# define OSSL_KDF_PARAM_SIZE "size" +# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id" +# define OSSL_KDF_PARAM_SSHKDF_TYPE "type" +# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash" +# define OSSL_KDF_PARAM_THREADS "threads" +# define OSSL_KDF_PARAM_UKM "ukm" +# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info" +# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info" +# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info" +# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo" +# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo" +# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits" +# define OSSL_KEM_PARAM_IKME "ikme" +# define OSSL_KEM_PARAM_OPERATION "operation" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree" +# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm" +# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len" +# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size" +# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_MAC_PARAM_CUSTOM "custom" +# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds" +# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit" +# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot" +# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds" +# define OSSL_MAC_PARAM_IV "iv" +# define OSSL_MAC_PARAM_KEY "key" +# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_MAC_PARAM_SALT "salt" +# define OSSL_MAC_PARAM_SIZE "size" +# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size" +# define OSSL_MAC_PARAM_XOF "xof" +# define OSSL_OBJECT_PARAM_DATA "data" +# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure" +# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type" +# define OSSL_OBJECT_PARAM_DESC "desc" +# define OSSL_OBJECT_PARAM_REFERENCE "reference" +# define OSSL_OBJECT_PARAM_TYPE "type" +# define OSSL_PASSPHRASE_PARAM_INFO "info" +# define OSSL_PKEY_PARAM_BITS "bits" +# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER +# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest" +# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm" +# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator" +# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len" +# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST +# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size" +# define OSSL_PKEY_PARAM_DIST_ID "distid" +# define OSSL_PKEY_PARAM_EC_A "a" +# define OSSL_PKEY_PARAM_EC_B "b" +# define OSSL_PKEY_PARAM_EC_CHAR2_M "m" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2" +# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3" +# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp" +# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type" +# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor" +# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit" +# define OSSL_PKEY_PARAM_EC_ENCODING "encoding" +# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type" +# define OSSL_PKEY_PARAM_EC_GENERATOR "generator" +# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check" +# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public" +# define OSSL_PKEY_PARAM_EC_ORDER "order" +# define OSSL_PKEY_PARAM_EC_P "p" +# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format" +# define OSSL_PKEY_PARAM_EC_PUB_X "qx" +# define OSSL_PKEY_PARAM_EC_PUB_Y "qy" +# define OSSL_PKEY_PARAM_EC_SEED "seed" +# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key" +# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE +# define OSSL_PKEY_PARAM_FFC_COFACTOR "j" +# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_FFC_G "g" +# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex" +# define OSSL_PKEY_PARAM_FFC_H "hindex" +# define OSSL_PKEY_PARAM_FFC_P "p" +# define OSSL_PKEY_PARAM_FFC_PBITS "pbits" +# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter" +# define OSSL_PKEY_PARAM_FFC_Q "q" +# define OSSL_PKEY_PARAM_FFC_QBITS "qbits" +# define OSSL_PKEY_PARAM_FFC_SEED "seed" +# define OSSL_PKEY_PARAM_FFC_TYPE "type" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy" +# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq" +# define OSSL_PKEY_PARAM_GROUP_NAME "group" +# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection" +# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest" +# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf" +# define OSSL_PKEY_PARAM_MAX_SIZE "max-size" +# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest" +# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties" +# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode" +# define OSSL_PKEY_PARAM_PRIV_KEY "priv" +# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_PUB_KEY "pub" +# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8" +# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9" +# define OSSL_PKEY_PARAM_RSA_D "d" +# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_PKEY_PARAM_RSA_E "e" +# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent" +# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1" +# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10" +# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2" +# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3" +# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4" +# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5" +# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6" +# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7" +# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8" +# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9" +# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor" +# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1" +# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10" +# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2" +# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3" +# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4" +# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5" +# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6" +# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7" +# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8" +# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9" +# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC +# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_PKEY_PARAM_RSA_N "n" +# define OSSL_PKEY_PARAM_RSA_PRIMES "primes" +# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen" +# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1" +# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2" +# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1" +# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2" +# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp" +# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1" +# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1" +# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2" +# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits" +# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG +# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag" +# define OSSL_PROV_PARAM_BUILDINFO "buildinfo" +# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename" +# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name" +# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version" +# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md" +# define OSSL_PROV_PARAM_NAME "name" +# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks" +# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc" +# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase" +# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type" +# define OSSL_PROV_PARAM_STATUS "status" +# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check" +# define OSSL_PROV_PARAM_VERSION "version" +# define OSSL_RAND_PARAM_GENERATE "generate" +# define OSSL_RAND_PARAM_MAX_REQUEST "max_request" +# define OSSL_RAND_PARAM_STATE "state" +# define OSSL_RAND_PARAM_STRENGTH "strength" +# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy" +# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce" +# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id" +# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string" +# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST +# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE +# define OSSL_SIGNATURE_PARAM_INSTANCE "instance" +# define OSSL_SIGNATURE_PARAM_KAT "kat" +# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST +# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES +# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type" +# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE +# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES +# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen" +# define OSSL_STORE_PARAM_ALIAS "alias" +# define OSSL_STORE_PARAM_DIGEST "digest" +# define OSSL_STORE_PARAM_EXPECT "expect" +# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint" +# define OSSL_STORE_PARAM_INPUT_TYPE "input-type" +# define OSSL_STORE_PARAM_ISSUER "name" +# define OSSL_STORE_PARAM_PROPERTIES "properties" +# define OSSL_STORE_PARAM_SERIAL "serial" +# define OSSL_STORE_PARAM_SUBJECT "subject" # ifdef __cplusplus } diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h.in new file mode 100644 index 00000000..c14520fe --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/core_names.h.in @@ -0,0 +1,119 @@ +/* + * {- join("\n * ", @autowarntext) -} + * + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ +{- +use OpenSSL::paramnames qw(generate_public_macros); +-} + +#ifndef OPENSSL_CORE_NAMES_H +# define OPENSSL_CORE_NAMES_H +# pragma once + +# ifdef __cplusplus +extern "C" { +# endif + +/* OSSL_CIPHER_PARAM_CTS_MODE Values */ +# define OSSL_CIPHER_CTS_MODE_CS1 "CS1" +# define OSSL_CIPHER_CTS_MODE_CS2 "CS2" +# define OSSL_CIPHER_CTS_MODE_CS3 "CS3" + +/* Known CIPHER names (not a complete list) */ +# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV" +# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV" + +/* Known DIGEST names (not a complete list) */ +# define OSSL_DIGEST_NAME_MD5 "MD5" +# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1" +# define OSSL_DIGEST_NAME_SHA1 "SHA1" +# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224" +# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256" +# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192" +# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384" +# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512" +# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224" +# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256" +# define OSSL_DIGEST_NAME_MD2 "MD2" +# define OSSL_DIGEST_NAME_MD4 "MD4" +# define OSSL_DIGEST_NAME_MDC2 "MDC2" +# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160" +# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224" +# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256" +# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384" +# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512" +# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128" +# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256" +# define OSSL_DIGEST_NAME_SM3 "SM3" + +/* Known MAC names */ +# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC" +# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC" +# define OSSL_MAC_NAME_CMAC "CMAC" +# define OSSL_MAC_NAME_GMAC "GMAC" +# define OSSL_MAC_NAME_HMAC "HMAC" +# define OSSL_MAC_NAME_KMAC128 "KMAC128" +# define OSSL_MAC_NAME_KMAC256 "KMAC256" +# define OSSL_MAC_NAME_POLY1305 "POLY1305" +# define OSSL_MAC_NAME_SIPHASH "SIPHASH" + +/* Known KDF names */ +# define OSSL_KDF_NAME_HKDF "HKDF" +# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF" +# define OSSL_KDF_NAME_PBKDF1 "PBKDF1" +# define OSSL_KDF_NAME_PBKDF2 "PBKDF2" +# define OSSL_KDF_NAME_SCRYPT "SCRYPT" +# define OSSL_KDF_NAME_SSHKDF "SSHKDF" +# define OSSL_KDF_NAME_SSKDF "SSKDF" +# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF" +# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1" +# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT" +# define OSSL_KDF_NAME_X963KDF "X963KDF" +# define OSSL_KDF_NAME_KBKDF "KBKDF" +# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF" +# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF" + +/* RSA padding modes */ +# define OSSL_PKEY_RSA_PAD_MODE_NONE "none" +# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1" +# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep" +# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931" +# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss" + +/* RSA pss padding salt length */ +# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto" +# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax" + +/* OSSL_PKEY_PARAM_EC_ENCODING values */ +# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit" +# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve" + +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed" +# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid" + +# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named" +# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist" + +/* OSSL_KEM_PARAM_OPERATION values */ +#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE" +#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM" + +/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */ +{- generate_public_macros(); -} + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h index 71b747ed..1f901f35 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crmf.h.in * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -43,8 +43,8 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; + DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) @@ -198,12 +198,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h.in index 4d37ea6d..43411fa4 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crmf.h.in @@ -1,7 +1,7 @@ /*- * {- join("\n * ", @autowarntext) -} * - * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright Nokia 2007-2019 * Copyright Siemens AG 2015-2019 * @@ -44,8 +44,8 @@ extern "C" { # define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 # define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 - typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; + DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) @@ -151,12 +151,14 @@ int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, int rid, int acceptRAVerified, OSSL_LIB_CTX *libctx, const char *propq); OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); -const ASN1_INTEGER -*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); +X509_PUBKEY +*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); +const ASN1_INTEGER +*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); X509_EXTENSIONS *OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); const X509_NAME diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h index ab01aae8..55e00dcc 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/crypto.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -88,6 +88,7 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -552,6 +553,8 @@ void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +void OSSL_sleep(uint64_t millis); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h.in index fb0c7cbb..b2d691b9 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/crypto.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -89,6 +89,7 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, CRYPTO_RWLOCK *lock); int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); +int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock); /* No longer needed, so this is a no-op */ #define OPENSSL_malloc_init() while(0) continue @@ -529,6 +530,8 @@ void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); +void OSSL_sleep(uint64_t millis); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h index b6dd8c35..e6dd1192 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h @@ -133,7 +133,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h.in index 16086b33..3fc2aaa9 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ct.h.in @@ -85,7 +85,7 @@ typedef enum { */ CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); - + /* * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library * context and property query string is used. diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dh.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dh.h index 8bc17448..f1c0ed06 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dh.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dh.h @@ -144,7 +144,7 @@ DECLARE_ASN1_ITEM(DHparams) # define DH_GENERATOR_3 3 # define DH_GENERATOR_5 5 -/* DH_check error codes */ +/* DH_check error codes, some of them shared with DH_check_pub_key */ /* * NB: These values must align with the equivalently named macros in * internal/ffc.h. @@ -154,10 +154,10 @@ DECLARE_ASN1_ITEM(DHparams) # define DH_UNABLE_TO_CHECK_GENERATOR 0x04 # define DH_NOT_SUITABLE_GENERATOR 0x08 # define DH_CHECK_Q_NOT_PRIME 0x10 -# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_Q_VALUE 0x20 /* +DH_check_pub_key */ # define DH_CHECK_INVALID_J_VALUE 0x40 # define DH_MODULUS_TOO_SMALL 0x80 -# define DH_MODULUS_TOO_LARGE 0x100 +# define DH_MODULUS_TOO_LARGE 0x100 /* +DH_check_pub_key */ /* DH_check_pub_key error codes */ # define DH_CHECK_PUBKEY_TOO_SMALL 0x01 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dherr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dherr.h index 5d2a762a..2997d7d4 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dherr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dherr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -40,6 +40,7 @@ # define DH_R_INVALID_PARAMETER_NID 114 # define DH_R_INVALID_PUBKEY 102 # define DH_R_INVALID_SECRET 128 +# define DH_R_INVALID_SIZE 129 # define DH_R_KDF_PARAMETER_ERROR 112 # define DH_R_KEYS_NOT_SET 108 # define DH_R_MISSING_PUBKEY 125 @@ -50,6 +51,7 @@ # define DH_R_NO_PRIVATE_VALUE 100 # define DH_R_PARAMETER_ENCODING_ERROR 105 # define DH_R_PEER_KEY_ERROR 111 +# define DH_R_Q_TOO_LARGE 130 # define DH_R_SHARED_INFO_ERROR 113 # define DH_R_UNABLE_TO_CHECK_GENERATOR 121 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dsa.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dsa.h index 160404cc..109878e6 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dsa.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/dsa.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_os2.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_os2.h index 32e142a9..e01f6275 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_os2.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_os2.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -89,7 +89,7 @@ extern "C" { /* * DLL settings. This part is a bit tough, because it's up to the - * application implementor how he or she will link the application, so it + * application implementer how he or she will link the application, so it * requires some macro to be used. */ # ifdef OPENSSL_SYS_WINDOWS diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_ostime.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_ostime.h new file mode 100644 index 00000000..8a7cc988 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/e_ostime.h @@ -0,0 +1,30 @@ +/* + * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_E_OSTIME_H +# define OPENSSL_E_OSTIME_H +# pragma once + +# include +# include +# include + +/* + * This header guarantees that 'struct timeval' will be available. It includes + * the minimum headers needed to facilitate this. This may still be a + * substantial set of headers on some platforms (e.g. on Win32). + */ + +# if defined(OPENSSL_SYS_WINDOWS) +# include +# else +# include +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ec.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ec.h index be9fb2f0..e1cbe982 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ec.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ec.h @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -460,6 +460,22 @@ EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, EC_GROUP *EC_GROUP_new_from_params(const OSSL_PARAM params[], OSSL_LIB_CTX *libctx, const char *propq); +/** + * Creates an OSSL_PARAM array with the parameters describing the given + * EC_GROUP. + * The resulting parameters may contain an explicit or a named curve depending + * on the EC_GROUP. + * \param group pointer to the EC_GROUP object + * \param libctx The associated library context or NULL for the default + * context + * \param propq A property query string + * \param bnctx BN_CTX object (optional) + * \return newly created OSSL_PARAM array with the parameters + * describing the given EC_GROUP or NULL if an error occurred + */ +OSSL_PARAM *EC_GROUP_to_params(const EC_GROUP *group, OSSL_LIB_CTX *libctx, + const char *propq, BN_CTX *bnctx); + /** * Creates a EC_GROUP object with a curve specified by a NID * \param libctx The associated library context or NULL for the default @@ -1111,7 +1127,7 @@ OSSL_DEPRECATEDIN_3_0 int EC_KEY_check_key(const EC_KEY *key); /** Indicates if an EC_KEY can be used for signing. * \param eckey the EC_KEY object - * \return 1 if can can sign and 0 otherwise. + * \return 1 if can sign and 0 otherwise. */ OSSL_DEPRECATEDIN_3_0 int EC_KEY_can_sign(const EC_KEY *eckey); @@ -1287,7 +1303,7 @@ OSSL_DEPRECATEDIN_3_0 int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *me OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_method(ENGINE *engine); /** The old name for ecdh_KDF_X9_63 - * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * The ECDH KDF specification has been mistakenly attributed to ANSI X9.62, * it is actually specified in ANSI X9.63. * This identifier is retained for backwards compatibility */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h index 2abf2483..b987e31f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -496,6 +496,13 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h.in index 11dc2163..1ef09de0 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/err.h.in @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -485,6 +485,13 @@ int ERR_get_next_error_library(void); int ERR_set_mark(void); int ERR_pop_to_mark(void); int ERR_clear_last_mark(void); +int ERR_count_to_mark(void); + +ERR_STATE *OSSL_ERR_STATE_new(void); +void OSSL_ERR_STATE_save(ERR_STATE *es); +void OSSL_ERR_STATE_save_to_mark(ERR_STATE *es); +void OSSL_ERR_STATE_restore(const ERR_STATE *es); +void OSSL_ERR_STATE_free(ERR_STATE *es); #ifdef __cplusplus } diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evp.h index d0fce0c5..ea7620d6 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evp.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evp.h @@ -35,6 +35,7 @@ # define EVP_MAX_KEY_LENGTH 64 # define EVP_MAX_IV_LENGTH 16 # define EVP_MAX_BLOCK_LENGTH 32 +# define EVP_MAX_AEAD_TAG_LENGTH 16 # define PKCS5_SALT_LEN 8 /* Default PKCS#5 iteration count */ @@ -228,7 +229,8 @@ int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, * if the following flag is set. */ # define EVP_MD_CTX_FLAG_FINALISE 0x0200 -/* NOTE: 0x0400 is reserved for internal usage */ +/* NOTE: 0x0400 and 0x0800 are reserved for internal usage */ + # ifndef OPENSSL_NO_DEPRECATED_3_0 OSSL_DEPRECATEDIN_3_0 EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); @@ -308,6 +310,7 @@ OSSL_DEPRECATEDIN_3_0 int # define EVP_CIPH_WRAP_MODE 0x10002 # define EVP_CIPH_OCB_MODE 0x10003 # define EVP_CIPH_SIV_MODE 0x10004 +# define EVP_CIPH_GCM_SIV_MODE 0x10005 # define EVP_CIPH_MODE 0xF0007 /* Set if variable length cipher */ # define EVP_CIPH_VARIABLE_LENGTH 0x8 @@ -674,7 +677,7 @@ void BIO_set_md(BIO *, const EVP_MD *md); # define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) # define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0,(c_pp)) -/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c, +__owur int EVP_Cipher(EVP_CIPHER_CTX *c, unsigned char *out, const unsigned char *in, unsigned int inl); @@ -752,7 +755,7 @@ int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); __owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv); -/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, +__owur int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv); @@ -760,16 +763,16 @@ __owur int EVP_EncryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv, const OSSL_PARAM params[]); -/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); -/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); -/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); __owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv); -/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, +__owur int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv); @@ -777,17 +780,17 @@ __owur int EVP_DecryptInit_ex2(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv, const OSSL_PARAM params[]); -/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, +__owur int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, const unsigned char *in, int inl); __owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); -/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, +__owur int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl); __owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, const unsigned char *key, const unsigned char *iv, int enc); -/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, +__owur int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl, const unsigned char *key, const unsigned char *iv, int enc); @@ -821,18 +824,18 @@ __owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, size_t siglen, const unsigned char *tbs, size_t tbslen); -int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, +__owur int EVP_DigestSignInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const char *mdname, OSSL_LIB_CTX *libctx, const char *props, EVP_PKEY *pkey, const OSSL_PARAM params[]); -/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, +__owur int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); -int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); +__owur int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *data, size_t dsize); __owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen); -int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, +__owur int EVP_DigestVerifyInit_ex(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const char *mdname, OSSL_LIB_CTX *libctx, const char *props, EVP_PKEY *pkey, const OSSL_PARAM params[]); @@ -1927,14 +1930,17 @@ int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); int EVP_PKEY_encapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_encapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpriv, + const OSSL_PARAM params[]); int EVP_PKEY_encapsulate(EVP_PKEY_CTX *ctx, unsigned char *wrappedkey, size_t *wrappedkeylen, unsigned char *genkey, size_t *genkeylen); int EVP_PKEY_decapsulate_init(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); +int EVP_PKEY_auth_decapsulate_init(EVP_PKEY_CTX *ctx, EVP_PKEY *authpub, + const OSSL_PARAM params[]); int EVP_PKEY_decapsulate(EVP_PKEY_CTX *ctx, unsigned char *unwrapped, size_t *unwrappedlen, const unsigned char *wrapped, size_t wrappedlen); - typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); int EVP_PKEY_fromdata_init(EVP_PKEY_CTX *ctx); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evperr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evperr.h index a5053f6c..11f3faa4 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evperr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/evperr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -110,11 +110,14 @@ # define EVP_R_UNABLE_TO_GET_RANDOM_STRENGTH 216 # define EVP_R_UNABLE_TO_LOCK_CONTEXT 211 # define EVP_R_UNABLE_TO_SET_CALLBACKS 217 +# define EVP_R_UNKNOWN_BITS 166 # define EVP_R_UNKNOWN_CIPHER 160 # define EVP_R_UNKNOWN_DIGEST 161 # define EVP_R_UNKNOWN_KEY_TYPE 207 +# define EVP_R_UNKNOWN_MAX_SIZE 167 # define EVP_R_UNKNOWN_OPTION 169 # define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNKNOWN_SECURITY_BITS 168 # define EVP_R_UNSUPPORTED_ALGORITHM 156 # define EVP_R_UNSUPPORTED_CIPHER 107 # define EVP_R_UNSUPPORTED_KEYLENGTH 123 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/hpke.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/hpke.h new file mode 100644 index 00000000..af637ac6 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/hpke.h @@ -0,0 +1,169 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* APIs and data structures for HPKE (RFC9180) */ +#ifndef OSSL_HPKE_H +# define OSSL_HPKE_H +# pragma once + +# include + +/* HPKE modes */ +# define OSSL_HPKE_MODE_BASE 0 /* Base mode */ +# define OSSL_HPKE_MODE_PSK 1 /* Pre-shared key mode */ +# define OSSL_HPKE_MODE_AUTH 2 /* Authenticated mode */ +# define OSSL_HPKE_MODE_PSKAUTH 3 /* PSK+authenticated mode */ + +/* + * Max for ikm, psk, pskid, info and exporter contexts. + * RFC9180, section 7.2.1 RECOMMENDS 64 octets but we have test vectors from + * Appendix A.6.1 with a 66 octet IKM so we'll allow that. + */ +# define OSSL_HPKE_MAX_PARMLEN 66 +# define OSSL_HPKE_MIN_PSKLEN 32 +# define OSSL_HPKE_MAX_INFOLEN 1024 + +/* + * The (16bit) HPKE algorithm ID IANA codepoints + * If/when new IANA codepoints are added there are tables in + * crypto/hpke/hpke_util.c that must also be updated. + */ +# define OSSL_HPKE_KEM_ID_RESERVED 0x0000 /* not used */ +# define OSSL_HPKE_KEM_ID_P256 0x0010 /* NIST P-256 */ +# define OSSL_HPKE_KEM_ID_P384 0x0011 /* NIST P-384 */ +# define OSSL_HPKE_KEM_ID_P521 0x0012 /* NIST P-521 */ +# define OSSL_HPKE_KEM_ID_X25519 0x0020 /* Curve25519 */ +# define OSSL_HPKE_KEM_ID_X448 0x0021 /* Curve448 */ + +# define OSSL_HPKE_KDF_ID_RESERVED 0x0000 /* not used */ +# define OSSL_HPKE_KDF_ID_HKDF_SHA256 0x0001 /* HKDF-SHA256 */ +# define OSSL_HPKE_KDF_ID_HKDF_SHA384 0x0002 /* HKDF-SHA384 */ +# define OSSL_HPKE_KDF_ID_HKDF_SHA512 0x0003 /* HKDF-SHA512 */ + +# define OSSL_HPKE_AEAD_ID_RESERVED 0x0000 /* not used */ +# define OSSL_HPKE_AEAD_ID_AES_GCM_128 0x0001 /* AES-GCM-128 */ +# define OSSL_HPKE_AEAD_ID_AES_GCM_256 0x0002 /* AES-GCM-256 */ +# define OSSL_HPKE_AEAD_ID_CHACHA_POLY1305 0x0003 /* Chacha20-Poly1305 */ +# define OSSL_HPKE_AEAD_ID_EXPORTONLY 0xFFFF /* export-only fake ID */ + +/* strings for suite components */ +# define OSSL_HPKE_KEMSTR_P256 "P-256" /* KEM id 0x10 */ +# define OSSL_HPKE_KEMSTR_P384 "P-384" /* KEM id 0x11 */ +# define OSSL_HPKE_KEMSTR_P521 "P-521" /* KEM id 0x12 */ +# define OSSL_HPKE_KEMSTR_X25519 "X25519" /* KEM id 0x20 */ +# define OSSL_HPKE_KEMSTR_X448 "X448" /* KEM id 0x21 */ +# define OSSL_HPKE_KDFSTR_256 "hkdf-sha256" /* KDF id 1 */ +# define OSSL_HPKE_KDFSTR_384 "hkdf-sha384" /* KDF id 2 */ +# define OSSL_HPKE_KDFSTR_512 "hkdf-sha512" /* KDF id 3 */ +# define OSSL_HPKE_AEADSTR_AES128GCM "aes-128-gcm" /* AEAD id 1 */ +# define OSSL_HPKE_AEADSTR_AES256GCM "aes-256-gcm" /* AEAD id 2 */ +# define OSSL_HPKE_AEADSTR_CP "chacha20-poly1305" /* AEAD id 3 */ +# define OSSL_HPKE_AEADSTR_EXP "exporter" /* AEAD id 0xff */ + +/* + * Roles for use in creating an OSSL_HPKE_CTX, most + * important use of this is to control nonce re-use. + */ +# define OSSL_HPKE_ROLE_SENDER 0 +# define OSSL_HPKE_ROLE_RECEIVER 1 + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct { + uint16_t kem_id; /* Key Encapsulation Method id */ + uint16_t kdf_id; /* Key Derivation Function id */ + uint16_t aead_id; /* AEAD alg id */ +} OSSL_HPKE_SUITE; + +/** + * Suite constants, use this like: + * OSSL_HPKE_SUITE myvar = OSSL_HPKE_SUITE_DEFAULT; + */ +# ifndef OPENSSL_NO_ECX +# define OSSL_HPKE_SUITE_DEFAULT \ + {\ + OSSL_HPKE_KEM_ID_X25519, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +# else +# define OSSL_HPKE_SUITE_DEFAULT \ + {\ + OSSL_HPKE_KEM_ID_P256, \ + OSSL_HPKE_KDF_ID_HKDF_SHA256, \ + OSSL_HPKE_AEAD_ID_AES_GCM_128 \ + } +#endif + +typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX; + +OSSL_HPKE_CTX *OSSL_HPKE_CTX_new(int mode, OSSL_HPKE_SUITE suite, int role, + OSSL_LIB_CTX *libctx, const char *propq); +void OSSL_HPKE_CTX_free(OSSL_HPKE_CTX *ctx); + +int OSSL_HPKE_encap(OSSL_HPKE_CTX *ctx, + unsigned char *enc, size_t *enclen, + const unsigned char *pub, size_t publen, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_seal(OSSL_HPKE_CTX *ctx, + unsigned char *ct, size_t *ctlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *pt, size_t ptlen); + +int OSSL_HPKE_keygen(OSSL_HPKE_SUITE suite, + unsigned char *pub, size_t *publen, EVP_PKEY **priv, + const unsigned char *ikm, size_t ikmlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_decap(OSSL_HPKE_CTX *ctx, + const unsigned char *enc, size_t enclen, + EVP_PKEY *recippriv, + const unsigned char *info, size_t infolen); +int OSSL_HPKE_open(OSSL_HPKE_CTX *ctx, + unsigned char *pt, size_t *ptlen, + const unsigned char *aad, size_t aadlen, + const unsigned char *ct, size_t ctlen); + +int OSSL_HPKE_export(OSSL_HPKE_CTX *ctx, + unsigned char *secret, + size_t secretlen, + const unsigned char *label, + size_t labellen); + +int OSSL_HPKE_CTX_set1_authpriv(OSSL_HPKE_CTX *ctx, EVP_PKEY *priv); +int OSSL_HPKE_CTX_set1_authpub(OSSL_HPKE_CTX *ctx, + const unsigned char *pub, + size_t publen); +int OSSL_HPKE_CTX_set1_psk(OSSL_HPKE_CTX *ctx, + const char *pskid, + const unsigned char *psk, size_t psklen); + +int OSSL_HPKE_CTX_set1_ikme(OSSL_HPKE_CTX *ctx, + const unsigned char *ikme, size_t ikmelen); + +int OSSL_HPKE_CTX_set_seq(OSSL_HPKE_CTX *ctx, uint64_t seq); +int OSSL_HPKE_CTX_get_seq(OSSL_HPKE_CTX *ctx, uint64_t *seq); + +int OSSL_HPKE_suite_check(OSSL_HPKE_SUITE suite); +int OSSL_HPKE_get_grease_value(const OSSL_HPKE_SUITE *suite_in, + OSSL_HPKE_SUITE *suite, + unsigned char *enc, size_t *enclen, + unsigned char *ct, size_t ctlen, + OSSL_LIB_CTX *libctx, const char *propq); +int OSSL_HPKE_str2suite(const char *str, OSSL_HPKE_SUITE *suite); +size_t OSSL_HPKE_get_ciphertext_size(OSSL_HPKE_SUITE suite, size_t clearlen); +size_t OSSL_HPKE_get_public_encap_size(OSSL_HPKE_SUITE suite); +size_t OSSL_HPKE_get_recommended_ikmelen(OSSL_HPKE_SUITE suite); + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/http.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/http.h index f7ab2142..a3cbf15f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/http.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/http.h @@ -1,5 +1,5 @@ /* - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright Siemens AG 2018-2020 * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -33,6 +33,8 @@ extern "C" { # define OPENSSL_HTTP_PROXY "HTTP_PROXY" # define OPENSSL_HTTPS_PROXY "HTTPS_PROXY" +# ifndef OPENSSL_NO_HTTP + #define OSSL_HTTP_DEFAULT_MAX_LINE_LEN (4 * 1024) #define OSSL_HTTP_DEFAULT_MAX_RESP_LEN (100 * 1024) @@ -103,6 +105,8 @@ int OSSL_HTTP_parse_url(const char *url, int *pssl, char **puser, char **phost, const char *OSSL_HTTP_adapt_proxy(const char *proxy, const char *no_proxy, const char *server, int use_ssl); + +# endif /* !defined(OPENSSL_NO_HTTP) */ # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h index f4155df1..8af9edd2 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h.in index dc344a54..c9dbd1f3 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/lhash.h.in @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/macros.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/macros.h index a614cd66..e9ef9387 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/macros.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/macros.h @@ -158,7 +158,7 @@ /* * Define macros for deprecation and simulated removal purposes. * - * The macros OSSL_DEPRECATED_{major}_{minor} are always defined for + * The macros OSSL_DEPRECATEDIN_{major}_{minor} are always defined for * all OpenSSL versions we care for. They can be used as attributes * in function declarations where appropriate. * @@ -169,6 +169,7 @@ * 'no-deprecated'. */ +# undef OPENSSL_NO_DEPRECATED_3_1 # undef OPENSSL_NO_DEPRECATED_3_0 # undef OPENSSL_NO_DEPRECATED_1_1_1 # undef OPENSSL_NO_DEPRECATED_1_1_0 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/obj_mac.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/obj_mac.h index 0e860276..e1b441b3 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/obj_mac.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/obj_mac.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by crypto/objects/objects.pl * - * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved. * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at @@ -886,6 +886,14 @@ #define NID_id_ct_signedChecklist 1247 #define OBJ_id_ct_signedChecklist OBJ_id_smime_ct,48L +#define SN_id_ct_ASPA "id-ct-ASPA" +#define NID_id_ct_ASPA 1250 +#define OBJ_id_ct_ASPA OBJ_id_smime_ct,49L + +#define SN_id_ct_signedTAL "id-ct-signedTAL" +#define NID_id_ct_signedTAL 1284 +#define OBJ_id_ct_signedTAL OBJ_id_smime_ct,50L + #define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" #define NID_id_smime_aa_receiptRequest 212 #define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L @@ -1002,10 +1010,22 @@ #define NID_id_smime_aa_dvcs_dvc 240 #define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L +#define SN_id_aa_ets_attrCertificateRefs "id-aa-ets-attrCertificateRefs" +#define NID_id_aa_ets_attrCertificateRefs 1261 +#define OBJ_id_aa_ets_attrCertificateRefs OBJ_id_smime_aa,44L + +#define SN_id_aa_ets_attrRevocationRefs "id-aa-ets-attrRevocationRefs" +#define NID_id_aa_ets_attrRevocationRefs 1262 +#define OBJ_id_aa_ets_attrRevocationRefs OBJ_id_smime_aa,45L + #define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" #define NID_id_smime_aa_signingCertificateV2 1086 #define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L +#define SN_id_aa_ets_archiveTimestampV2 "id-aa-ets-archiveTimestampV2" +#define NID_id_aa_ets_archiveTimestampV2 1280 +#define OBJ_id_aa_ets_archiveTimestampV2 OBJ_id_smime_aa,48L + #define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" #define NID_id_smime_alg_ESDHwith3DES 241 #define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L @@ -1082,15 +1102,17 @@ #define NID_localKeyID 157 #define OBJ_localKeyID OBJ_pkcs9,21L +#define OBJ_ms_corp 1L,3L,6L,1L,4L,1L,311L + #define SN_ms_csp_name "CSPName" #define LN_ms_csp_name "Microsoft CSP Name" #define NID_ms_csp_name 417 -#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L +#define OBJ_ms_csp_name OBJ_ms_corp,17L,1L #define SN_LocalKeySet "LocalKeySet" #define LN_LocalKeySet "Microsoft Local Key set" #define NID_LocalKeySet 856 -#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L +#define OBJ_LocalKeySet OBJ_ms_corp,17L,2L #define OBJ_certTypes OBJ_pkcs9,22L @@ -1108,6 +1130,10 @@ #define NID_x509Crl 160 #define OBJ_x509Crl OBJ_crlTypes,1L +#define SN_id_aa_CMSAlgorithmProtection "id-aa-CMSAlgorithmProtection" +#define NID_id_aa_CMSAlgorithmProtection 1263 +#define OBJ_id_aa_CMSAlgorithmProtection OBJ_pkcs9,52L + #define OBJ_pkcs12 OBJ_pkcs,12L #define OBJ_pkcs12_pbeids OBJ_pkcs12,1L @@ -1217,6 +1243,10 @@ #define NID_SM2_with_SM3 1204 #define OBJ_SM2_with_SM3 OBJ_sm_scheme,501L +#define LN_hmacWithSM3 "hmacWithSM3" +#define NID_hmacWithSM3 1281 +#define OBJ_hmacWithSM3 OBJ_sm3,3L,1L + #define LN_hmacWithSHA224 "hmacWithSHA224" #define NID_hmacWithSHA224 798 #define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L @@ -1300,42 +1330,62 @@ #define SN_ms_ext_req "msExtReq" #define LN_ms_ext_req "Microsoft Extension Request" #define NID_ms_ext_req 171 -#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L +#define OBJ_ms_ext_req OBJ_ms_corp,2L,1L,14L #define SN_ms_code_ind "msCodeInd" #define LN_ms_code_ind "Microsoft Individual Code Signing" #define NID_ms_code_ind 134 -#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L +#define OBJ_ms_code_ind OBJ_ms_corp,2L,1L,21L #define SN_ms_code_com "msCodeCom" #define LN_ms_code_com "Microsoft Commercial Code Signing" #define NID_ms_code_com 135 -#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L +#define OBJ_ms_code_com OBJ_ms_corp,2L,1L,22L #define SN_ms_ctl_sign "msCTLSign" #define LN_ms_ctl_sign "Microsoft Trust List Signing" #define NID_ms_ctl_sign 136 -#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L +#define OBJ_ms_ctl_sign OBJ_ms_corp,10L,3L,1L #define SN_ms_sgc "msSGC" #define LN_ms_sgc "Microsoft Server Gated Crypto" #define NID_ms_sgc 137 -#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L +#define OBJ_ms_sgc OBJ_ms_corp,10L,3L,3L #define SN_ms_efs "msEFS" #define LN_ms_efs "Microsoft Encrypted File System" #define NID_ms_efs 138 -#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L +#define OBJ_ms_efs OBJ_ms_corp,10L,3L,4L #define SN_ms_smartcard_login "msSmartcardLogin" #define LN_ms_smartcard_login "Microsoft Smartcard Login" #define NID_ms_smartcard_login 648 -#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L +#define OBJ_ms_smartcard_login OBJ_ms_corp,20L,2L,2L #define SN_ms_upn "msUPN" #define LN_ms_upn "Microsoft User Principal Name" #define NID_ms_upn 649 -#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L +#define OBJ_ms_upn OBJ_ms_corp,20L,2L,3L + +#define SN_ms_ntds_sec_ext "ms-ntds-sec-ext" +#define LN_ms_ntds_sec_ext "Microsoft NTDS CA Extension" +#define NID_ms_ntds_sec_ext 1292 +#define OBJ_ms_ntds_sec_ext OBJ_ms_corp,25L,2L + +#define SN_ms_ntds_obj_sid "ms-ntds-obj-sid" +#define LN_ms_ntds_obj_sid "Microsoft NTDS AD objectSid" +#define NID_ms_ntds_obj_sid 1291 +#define OBJ_ms_ntds_obj_sid OBJ_ms_corp,25L,2L,1L + +#define SN_ms_cert_templ "ms-cert-templ" +#define LN_ms_cert_templ "Microsoft certificate template" +#define NID_ms_cert_templ 1293 +#define OBJ_ms_cert_templ OBJ_ms_corp,21L,7L + +#define SN_ms_app_policies "ms-app-policies" +#define LN_ms_app_policies "Microsoft Application Policies Extension" +#define NID_ms_app_policies 1294 +#define OBJ_ms_app_policies OBJ_ms_corp,21L,10L #define SN_idea_cbc "IDEA-CBC" #define LN_idea_cbc "idea-cbc" @@ -1503,6 +1553,18 @@ #define NID_id_mod_cmp2000 284 #define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L +#define SN_id_mod_cmp2000_02 "id-mod-cmp2000-02" +#define NID_id_mod_cmp2000_02 1251 +#define OBJ_id_mod_cmp2000_02 OBJ_id_pkix_mod,50L + +#define SN_id_mod_cmp2021_88 "id-mod-cmp2021-88" +#define NID_id_mod_cmp2021_88 1252 +#define OBJ_id_mod_cmp2021_88 OBJ_id_pkix_mod,99L + +#define SN_id_mod_cmp2021_02 "id-mod-cmp2021-02" +#define NID_id_mod_cmp2021_02 1253 +#define OBJ_id_mod_cmp2021_02 OBJ_id_pkix_mod,100L + #define SN_info_access "authorityInfoAccess" #define LN_info_access "Authority Information Access" #define NID_info_access 177 @@ -1783,6 +1845,22 @@ #define NID_id_it_certReqTemplate 1225 #define OBJ_id_it_certReqTemplate OBJ_id_it,19L +#define SN_id_it_rootCaCert "id-it-rootCaCert" +#define NID_id_it_rootCaCert 1254 +#define OBJ_id_it_rootCaCert OBJ_id_it,20L + +#define SN_id_it_certProfile "id-it-certProfile" +#define NID_id_it_certProfile 1255 +#define OBJ_id_it_certProfile OBJ_id_it,21L + +#define SN_id_it_crlStatusList "id-it-crlStatusList" +#define NID_id_it_crlStatusList 1256 +#define OBJ_id_it_crlStatusList OBJ_id_it,22L + +#define SN_id_it_crls "id-it-crls" +#define NID_id_it_crls 1257 +#define OBJ_id_it_crls OBJ_id_it,23L + #define SN_id_regCtrl "id-regCtrl" #define NID_id_regCtrl 313 #define OBJ_id_regCtrl OBJ_id_pkip,1L @@ -1815,6 +1893,18 @@ #define NID_id_regCtrl_protocolEncrKey 320 #define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L +#define SN_id_regCtrl_altCertTemplate "id-regCtrl-altCertTemplate" +#define NID_id_regCtrl_altCertTemplate 1258 +#define OBJ_id_regCtrl_altCertTemplate OBJ_id_regCtrl,7L + +#define SN_id_regCtrl_algId "id-regCtrl-algId" +#define NID_id_regCtrl_algId 1259 +#define OBJ_id_regCtrl_algId OBJ_id_regCtrl,11L + +#define SN_id_regCtrl_rsaKeyLen "id-regCtrl-rsaKeyLen" +#define NID_id_regCtrl_rsaKeyLen 1260 +#define OBJ_id_regCtrl_rsaKeyLen OBJ_id_regCtrl,12L + #define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" #define NID_id_regInfo_utf8Pairs 321 #define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L @@ -2649,11 +2739,56 @@ #define NID_ext_key_usage 126 #define OBJ_ext_key_usage OBJ_id_ce,37L +#define SN_authority_attribute_identifier "authorityAttributeIdentifier" +#define LN_authority_attribute_identifier "X509v3 Authority Attribute Identifier" +#define NID_authority_attribute_identifier 1295 +#define OBJ_authority_attribute_identifier OBJ_id_ce,38L + +#define SN_role_spec_cert_identifier "roleSpecCertIdentifier" +#define LN_role_spec_cert_identifier "X509v3 Role Specification Certificate Identifier" +#define NID_role_spec_cert_identifier 1296 +#define OBJ_role_spec_cert_identifier OBJ_id_ce,39L + +#define SN_basic_att_constraints "basicAttConstraints" +#define LN_basic_att_constraints "X509v3 Basic Attribute Certificate Constraints" +#define NID_basic_att_constraints 1297 +#define OBJ_basic_att_constraints OBJ_id_ce,41L + +#define SN_delegated_name_constraints "delegatedNameConstraints" +#define LN_delegated_name_constraints "X509v3 Delegated Name Constraints" +#define NID_delegated_name_constraints 1298 +#define OBJ_delegated_name_constraints OBJ_id_ce,42L + +#define SN_time_specification "timeSpecification" +#define LN_time_specification "X509v3 Time Specification" +#define NID_time_specification 1299 +#define OBJ_time_specification OBJ_id_ce,43L + #define SN_freshest_crl "freshestCRL" #define LN_freshest_crl "X509v3 Freshest CRL" #define NID_freshest_crl 857 #define OBJ_freshest_crl OBJ_id_ce,46L +#define SN_attribute_descriptor "attributeDescriptor" +#define LN_attribute_descriptor "X509v3 Attribute Descriptor" +#define NID_attribute_descriptor 1300 +#define OBJ_attribute_descriptor OBJ_id_ce,48L + +#define SN_user_notice "userNotice" +#define LN_user_notice "X509v3 User Notice" +#define NID_user_notice 1301 +#define OBJ_user_notice OBJ_id_ce,49L + +#define SN_soa_identifier "sOAIdentifier" +#define LN_soa_identifier "X509v3 Source of Authority Identifier" +#define NID_soa_identifier 1302 +#define OBJ_soa_identifier OBJ_id_ce,50L + +#define SN_acceptable_cert_policies "acceptableCertPolicies" +#define LN_acceptable_cert_policies "X509v3 Acceptable Certification Policies" +#define NID_acceptable_cert_policies 1303 +#define OBJ_acceptable_cert_policies OBJ_id_ce,52L + #define SN_inhibit_any_policy "inhibitAnyPolicy" #define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" #define NID_inhibit_any_policy 748 @@ -2669,6 +2804,86 @@ #define NID_no_rev_avail 403 #define OBJ_no_rev_avail OBJ_id_ce,56L +#define SN_acceptable_privilege_policies "acceptablePrivPolicies" +#define LN_acceptable_privilege_policies "X509v3 Acceptable Privilege Policies" +#define NID_acceptable_privilege_policies 1304 +#define OBJ_acceptable_privilege_policies OBJ_id_ce,57L + +#define SN_indirect_issuer "indirectIssuer" +#define LN_indirect_issuer "X509v3 Indirect Issuer" +#define NID_indirect_issuer 1305 +#define OBJ_indirect_issuer OBJ_id_ce,61L + +#define SN_no_assertion "noAssertion" +#define LN_no_assertion "X509v3 No Assertion" +#define NID_no_assertion 1306 +#define OBJ_no_assertion OBJ_id_ce,62L + +#define SN_id_aa_issuing_distribution_point "aAissuingDistributionPoint" +#define LN_id_aa_issuing_distribution_point "X509v3 Attribute Authority Issuing Distribution Point" +#define NID_id_aa_issuing_distribution_point 1307 +#define OBJ_id_aa_issuing_distribution_point OBJ_id_ce,63L + +#define SN_issued_on_behalf_of "issuedOnBehalfOf" +#define LN_issued_on_behalf_of "X509v3 Issued On Behalf Of" +#define NID_issued_on_behalf_of 1308 +#define OBJ_issued_on_behalf_of OBJ_id_ce,64L + +#define SN_single_use "singleUse" +#define LN_single_use "X509v3 Single Use" +#define NID_single_use 1309 +#define OBJ_single_use OBJ_id_ce,65L + +#define SN_group_ac "groupAC" +#define LN_group_ac "X509v3 Group Attribute Certificate" +#define NID_group_ac 1310 +#define OBJ_group_ac OBJ_id_ce,66L + +#define SN_allowed_attribute_assignments "allowedAttributeAssignments" +#define LN_allowed_attribute_assignments "X509v3 Allowed Attribute Assignments" +#define NID_allowed_attribute_assignments 1311 +#define OBJ_allowed_attribute_assignments OBJ_id_ce,67L + +#define SN_attribute_mappings "attributeMappings" +#define LN_attribute_mappings "X509v3 Attribute Mappings" +#define NID_attribute_mappings 1312 +#define OBJ_attribute_mappings OBJ_id_ce,68L + +#define SN_holder_name_constraints "holderNameConstraints" +#define LN_holder_name_constraints "X509v3 Holder Name Constraints" +#define NID_holder_name_constraints 1313 +#define OBJ_holder_name_constraints OBJ_id_ce,69L + +#define SN_authorization_validation "authorizationValidation" +#define LN_authorization_validation "X509v3 Authorization Validation" +#define NID_authorization_validation 1314 +#define OBJ_authorization_validation OBJ_id_ce,70L + +#define SN_prot_restrict "protRestrict" +#define LN_prot_restrict "X509v3 Protocol Restriction" +#define NID_prot_restrict 1315 +#define OBJ_prot_restrict OBJ_id_ce,71L + +#define SN_subject_alt_public_key_info "subjectAltPublicKeyInfo" +#define LN_subject_alt_public_key_info "X509v3 Subject Alternative Public Key Info" +#define NID_subject_alt_public_key_info 1316 +#define OBJ_subject_alt_public_key_info OBJ_id_ce,72L + +#define SN_alt_signature_algorithm "altSignatureAlgorithm" +#define LN_alt_signature_algorithm "X509v3 Alternative Signature Algorithm" +#define NID_alt_signature_algorithm 1317 +#define OBJ_alt_signature_algorithm OBJ_id_ce,73L + +#define SN_alt_signature_value "altSignatureValue" +#define LN_alt_signature_value "X509v3 Alternative Signature Value" +#define NID_alt_signature_value 1318 +#define OBJ_alt_signature_value OBJ_id_ce,74L + +#define SN_associated_information "associatedInformation" +#define LN_associated_information "X509v3 Associated Information" +#define NID_associated_information 1319 +#define OBJ_associated_information OBJ_id_ce,75L + #define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" #define LN_anyExtendedKeyUsage "Any Extended Key Usage" #define NID_anyExtendedKeyUsage 910 @@ -3220,6 +3435,70 @@ #define NID_hold_instruction_reject 433 #define OBJ_hold_instruction_reject OBJ_holdInstruction,3L +#define SN_itu_t_identified_organization "itu-t-identified-organization" +#define NID_itu_t_identified_organization 1264 +#define OBJ_itu_t_identified_organization OBJ_itu_t,4L + +#define SN_etsi "etsi" +#define NID_etsi 1265 +#define OBJ_etsi OBJ_itu_t_identified_organization,0L + +#define SN_electronic_signature_standard "electronic-signature-standard" +#define NID_electronic_signature_standard 1266 +#define OBJ_electronic_signature_standard OBJ_etsi,1733L + +#define SN_ess_attributes "ess-attributes" +#define NID_ess_attributes 1267 +#define OBJ_ess_attributes OBJ_electronic_signature_standard,2L + +#define SN_id_aa_ets_mimeType "id-aa-ets-mimeType" +#define NID_id_aa_ets_mimeType 1268 +#define OBJ_id_aa_ets_mimeType OBJ_ess_attributes,1L + +#define SN_id_aa_ets_longTermValidation "id-aa-ets-longTermValidation" +#define NID_id_aa_ets_longTermValidation 1269 +#define OBJ_id_aa_ets_longTermValidation OBJ_ess_attributes,2L + +#define SN_id_aa_ets_SignaturePolicyDocument "id-aa-ets-SignaturePolicyDocument" +#define NID_id_aa_ets_SignaturePolicyDocument 1270 +#define OBJ_id_aa_ets_SignaturePolicyDocument OBJ_ess_attributes,3L + +#define SN_id_aa_ets_archiveTimestampV3 "id-aa-ets-archiveTimestampV3" +#define NID_id_aa_ets_archiveTimestampV3 1271 +#define OBJ_id_aa_ets_archiveTimestampV3 OBJ_ess_attributes,4L + +#define SN_id_aa_ATSHashIndex "id-aa-ATSHashIndex" +#define NID_id_aa_ATSHashIndex 1272 +#define OBJ_id_aa_ATSHashIndex OBJ_ess_attributes,5L + +#define SN_cades "cades" +#define NID_cades 1273 +#define OBJ_cades OBJ_etsi,19122L + +#define SN_cades_attributes "cades-attributes" +#define NID_cades_attributes 1274 +#define OBJ_cades_attributes OBJ_cades,1L + +#define SN_id_aa_ets_signerAttrV2 "id-aa-ets-signerAttrV2" +#define NID_id_aa_ets_signerAttrV2 1275 +#define OBJ_id_aa_ets_signerAttrV2 OBJ_cades_attributes,1L + +#define SN_id_aa_ets_sigPolicyStore "id-aa-ets-sigPolicyStore" +#define NID_id_aa_ets_sigPolicyStore 1276 +#define OBJ_id_aa_ets_sigPolicyStore OBJ_cades_attributes,3L + +#define SN_id_aa_ATSHashIndex_v2 "id-aa-ATSHashIndex-v2" +#define NID_id_aa_ATSHashIndex_v2 1277 +#define OBJ_id_aa_ATSHashIndex_v2 OBJ_cades_attributes,4L + +#define SN_id_aa_ATSHashIndex_v3 "id-aa-ATSHashIndex-v3" +#define NID_id_aa_ATSHashIndex_v3 1278 +#define OBJ_id_aa_ATSHashIndex_v3 OBJ_cades_attributes,5L + +#define SN_signedAssertion "signedAssertion" +#define NID_signedAssertion 1279 +#define OBJ_signedAssertion OBJ_cades_attributes,6L + #define SN_data "data" #define NID_data 434 #define OBJ_data OBJ_itu_t,9L @@ -4952,6 +5231,21 @@ #define NID_sm4_ctr 1139 #define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L +#define SN_sm4_gcm "SM4-GCM" +#define LN_sm4_gcm "sm4-gcm" +#define NID_sm4_gcm 1248 +#define OBJ_sm4_gcm OBJ_sm_scheme,104L,8L + +#define SN_sm4_ccm "SM4-CCM" +#define LN_sm4_ccm "sm4-ccm" +#define NID_sm4_ccm 1249 +#define OBJ_sm4_ccm OBJ_sm_scheme,104L,9L + +#define SN_sm4_xts "SM4-XTS" +#define LN_sm4_xts "sm4-xts" +#define NID_sm4_xts 1290 +#define OBJ_sm4_xts OBJ_sm_scheme,104L,10L + #define SN_hmac "HMAC" #define LN_hmac "hmac" #define NID_hmac 855 @@ -5029,6 +5323,9 @@ #define NID_brainpoolP256r1 927 #define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L +#define SN_brainpoolP256r1tls13 "brainpoolP256r1tls13" +#define NID_brainpoolP256r1tls13 1285 + #define SN_brainpoolP256t1 "brainpoolP256t1" #define NID_brainpoolP256t1 928 #define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L @@ -5045,6 +5342,9 @@ #define NID_brainpoolP384r1 931 #define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L +#define SN_brainpoolP384r1tls13 "brainpoolP384r1tls13" +#define NID_brainpoolP384r1tls13 1286 + #define SN_brainpoolP384t1 "brainpoolP384t1" #define NID_brainpoolP384t1 932 #define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L @@ -5053,6 +5353,9 @@ #define NID_brainpoolP512r1 933 #define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L +#define SN_brainpoolP512r1tls13 "brainpoolP512r1tls13" +#define NID_brainpoolP512r1tls13 1287 + #define SN_brainpoolP512t1 "brainpoolP512t1" #define NID_brainpoolP512t1 934 #define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L @@ -5130,17 +5433,17 @@ #define SN_jurisdictionLocalityName "jurisdictionL" #define LN_jurisdictionLocalityName "jurisdictionLocalityName" #define NID_jurisdictionLocalityName 955 -#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L +#define OBJ_jurisdictionLocalityName OBJ_ms_corp,60L,2L,1L,1L #define SN_jurisdictionStateOrProvinceName "jurisdictionST" #define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" #define NID_jurisdictionStateOrProvinceName 956 -#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L +#define OBJ_jurisdictionStateOrProvinceName OBJ_ms_corp,60L,2L,1L,2L #define SN_jurisdictionCountryName "jurisdictionC" #define LN_jurisdictionCountryName "jurisdictionCountryName" #define NID_jurisdictionCountryName 957 -#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L +#define OBJ_jurisdictionCountryName OBJ_ms_corp,60L,2L,1L,3L #define SN_id_scrypt "id-scrypt" #define LN_id_scrypt "scrypt" @@ -5432,6 +5735,24 @@ #define LN_aes_256_siv "aes-256-siv" #define NID_aes_256_siv 1200 +#define SN_oracle "oracle-organization" +#define LN_oracle "Oracle organization" +#define NID_oracle 1282 +#define OBJ_oracle OBJ_joint_iso_itu_t,16L,840L,1L,113894L + +#define SN_oracle_jdk_trustedkeyusage "oracle-jdk-trustedkeyusage" +#define LN_oracle_jdk_trustedkeyusage "Trusted key usage (Oracle)" +#define NID_oracle_jdk_trustedkeyusage 1283 +#define OBJ_oracle_jdk_trustedkeyusage OBJ_oracle,746875L,1L,1L + +#define SN_brotli "brotli" +#define LN_brotli "Brotli compression" +#define NID_brotli 1288 + +#define SN_zstd "zstd" +#define LN_zstd "Zstandard compression" +#define NID_zstd 1289 + #endif /* OPENSSL_OBJ_MAC_H */ #ifndef OPENSSL_NO_DEPRECATED_3_0 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/opensslv.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/opensslv.h index b87a4aa1..7f1ecf66 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/opensslv.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/opensslv.h @@ -28,8 +28,8 @@ extern "C" { * These macros express version number MAJOR.MINOR.PATCH exactly */ # define OPENSSL_VERSION_MAJOR 3 -# define OPENSSL_VERSION_MINOR 1 -# define OPENSSL_VERSION_PATCH 4 +# define OPENSSL_VERSION_MINOR 2 +# define OPENSSL_VERSION_PATCH 0 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.1.4" -# define OPENSSL_FULL_VERSION_STR "3.1.4" +# define OPENSSL_VERSION_STR "3.2.0" +# define OPENSSL_FULL_VERSION_STR "3.2.0" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "24 Oct 2023" +# define OPENSSL_RELEASE_DATE "23 Nov 2023" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.1.4 24 Oct 2023" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.2.0 23 Nov 2023" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pem.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pem.h index 000d9c89..0446c770 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pem.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pem.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -57,6 +57,7 @@ extern "C" { # define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" # define PEM_STRING_PARAMETERS "PARAMETERS" # define PEM_STRING_CMS "CMS" +# define PEM_STRING_SM2PARAMETERS "SM2 PARAMETERS" # define PEM_TYPE_ENCRYPTED 10 # define PEM_TYPE_MIC_ONLY 20 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h index 9e20fc1a..b08b0bc2 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/pkcs12.h.in * - * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -44,6 +44,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -133,7 +134,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -221,6 +224,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -308,6 +312,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -315,6 +320,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h.in index cf956b41..35759d4d 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -45,6 +45,7 @@ extern "C" { # define PKCS12_MAC_KEY_LENGTH 20 +/* The macro is expected to be used only internally. Kept for backwards compatibility. */ # define PKCS12_SALT_LEN 8 /* It's not clear if these are actually needed... */ @@ -110,7 +111,9 @@ int PKCS12_SAFEBAG_get_bag_nid(const PKCS12_SAFEBAG *bag); const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(const PKCS12_SAFEBAG *bag); +X509 *PKCS12_SAFEBAG_get1_cert_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +X509_CRL *PKCS12_SAFEBAG_get1_crl_ex(const PKCS12_SAFEBAG *bag, OSSL_LIB_CTX *libctx, const char *propq); X509_CRL *PKCS12_SAFEBAG_get1_crl(const PKCS12_SAFEBAG *bag); const STACK_OF(PKCS12_SAFEBAG) * PKCS12_SAFEBAG_get0_safes(const PKCS12_SAFEBAG *bag); @@ -198,6 +201,7 @@ ASN1_TYPE *PKCS12_get_attr_gen(const STACK_OF(X509_ATTRIBUTE) *attrs, char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag); const STACK_OF(X509_ATTRIBUTE) * PKCS12_SAFEBAG_get0_attrs(const PKCS12_SAFEBAG *bag); +void PKCS12_SAFEBAG_set0_attrs(PKCS12_SAFEBAG *bag, STACK_OF(X509_ATTRIBUTE) *attrs); unsigned char *PKCS12_pbe_crypt(const X509_ALGOR *algor, const char *pass, int passlen, const unsigned char *in, int inlen, @@ -285,6 +289,7 @@ DECLARE_ASN1_ITEM(PKCS12_AUTHSAFES) void PKCS12_PBE_add(void); int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); +typedef int PKCS12_create_cb(PKCS12_SAFEBAG *bag, void *cbarg); PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype); @@ -292,6 +297,11 @@ PKCS12 *PKCS12_create_ex(const char *pass, const char *name, EVP_PKEY *pkey, X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, int iter, int mac_iter, int keytype, OSSL_LIB_CTX *ctx, const char *propq); +PKCS12 *PKCS12_create_ex2(const char *pass, const char *name, EVP_PKEY *pkey, + X509 *cert, STACK_OF(X509) *ca, int nid_key, int nid_cert, + int iter, int mac_iter, int keytype, + OSSL_LIB_CTX *ctx, const char *propq, + PKCS12_create_cb *cb, void *cbarg); PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert); PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12err.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12err.h index 933c8329..abce3736 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12err.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs12err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -21,6 +21,7 @@ /* * PKCS12 reason codes. */ +# define PKCS12_R_CALLBACK_FAILED 115 # define PKCS12_R_CANT_PACK_STRUCTURE 100 # define PKCS12_R_CONTENT_TYPE_NOT_DATA 121 # define PKCS12_R_DECODE_ERROR 101 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h index f824546c..dc46c511 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h @@ -134,8 +134,8 @@ SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INF typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -161,8 +161,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -203,7 +203,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -344,13 +344,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h.in index a346bc74..11a636e1 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/pkcs7.h.in @@ -87,8 +87,8 @@ typedef struct pkcs7_recip_info_st { typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; struct pkcs7_st *contents; } PKCS7_SIGNED; @@ -114,8 +114,8 @@ typedef struct pkcs7_enveloped_st { typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ STACK_OF(X509_ALGOR) *md_algs; /* md used */ - STACK_OF(X509) *cert; /* [ 0 ] */ - STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(X509) *cert; /* [ 0 ] */ /* name should be 'certificates' */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ /* name should be 'crls' */ STACK_OF(PKCS7_SIGNER_INFO) *signer_info; PKCS7_ENC_CONTENT *enc_data; STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; @@ -156,7 +156,7 @@ typedef struct pkcs7_st { /* NID_pkcs7_data */ ASN1_OCTET_STRING *data; /* NID_pkcs7_signed */ - PKCS7_SIGNED *sign; + PKCS7_SIGNED *sign; /* field name 'signed' would clash with C keyword */ /* NID_pkcs7_enveloped */ PKCS7_ENVELOPE *enveloped; /* NID_pkcs7_signedAndEnveloped */ @@ -273,13 +273,13 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst); int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); -int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); -int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_add_certificate(PKCS7 *p7, X509 *cert); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl); int PKCS7_content_new(PKCS7 *p7, int nid); int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, - X509 *x509); + X509 *signer); BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/prov_ssl.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/prov_ssl.h index d3e0896c..76d01e1e 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/prov_ssl.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/prov_ssl.h @@ -1,5 +1,5 @@ /* - * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -19,6 +19,7 @@ extern "C" { # define SSL_MAX_MASTER_KEY_LENGTH 48 +/* SSL/TLS uses a 2 byte unsigned version number */ # define SSL3_VERSION 0x0300 # define TLS1_VERSION 0x0301 # define TLS1_1_VERSION 0x0302 @@ -28,6 +29,9 @@ extern "C" { # define DTLS1_2_VERSION 0xFEFD # define DTLS1_BAD_VER 0x0100 +/* QUIC uses a 4 byte unsigned version number */ +# define OSSL_QUIC1_VERSION 0x0000001 + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/proverr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/proverr.h index 5d5c16d9..d9ef5681 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/proverr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/proverr.h @@ -52,6 +52,7 @@ # define PROV_R_INDICATOR_INTEGRITY_FAILURE 210 # define PROV_R_INSUFFICIENT_DRBG_STRENGTH 181 # define PROV_R_INVALID_AAD 108 +# define PROV_R_INVALID_AEAD 231 # define PROV_R_INVALID_CONFIG_DATA 211 # define PROV_R_INVALID_CONSTANT_LENGTH 157 # define PROV_R_INVALID_CURVE 176 @@ -63,9 +64,11 @@ # define PROV_R_INVALID_INPUT_LENGTH 230 # define PROV_R_INVALID_ITERATION_COUNT 123 # define PROV_R_INVALID_IV_LENGTH 109 +# define PROV_R_INVALID_KDF 232 # define PROV_R_INVALID_KEY 158 # define PROV_R_INVALID_KEY_LENGTH 105 # define PROV_R_INVALID_MAC 151 +# define PROV_R_INVALID_MEMORY_SIZE 235 # define PROV_R_INVALID_MGF1_MD 167 # define PROV_R_INVALID_MODE 125 # define PROV_R_INVALID_OUTPUT_LENGTH 217 @@ -77,6 +80,7 @@ # define PROV_R_INVALID_STATE 212 # define PROV_R_INVALID_TAG 110 # define PROV_R_INVALID_TAG_LENGTH 118 +# define PROV_R_INVALID_THREAD_POOL_SIZE 234 # define PROV_R_INVALID_UKM_LENGTH 200 # define PROV_R_INVALID_X931_DIGEST 170 # define PROV_R_IN_ERROR_STATE 192 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/provider.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/provider.h index dc86ff58..24ec0827 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/provider.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/provider.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -17,13 +17,19 @@ extern "C" { # endif -/* Set the default provider search path */ +/* Set and Get a library context search path */ int OSSL_PROVIDER_set_default_search_path(OSSL_LIB_CTX *, const char *path); +const char *OSSL_PROVIDER_get0_default_search_path(OSSL_LIB_CTX *libctx); /* Load and unload a provider */ OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *, const char *name); +OSSL_PROVIDER *OSSL_PROVIDER_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params); OSSL_PROVIDER *OSSL_PROVIDER_try_load(OSSL_LIB_CTX *, const char *name, int retain_fallbacks); +OSSL_PROVIDER *OSSL_PROVIDER_try_load_ex(OSSL_LIB_CTX *, const char *name, + OSSL_PARAM *params, + int retain_fallbacks); int OSSL_PROVIDER_unload(OSSL_PROVIDER *prov); int OSSL_PROVIDER_available(OSSL_LIB_CTX *, const char *name); int OSSL_PROVIDER_do_all(OSSL_LIB_CTX *ctx, diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/quic.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/quic.h new file mode 100644 index 00000000..74a6345d --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/quic.h @@ -0,0 +1,37 @@ +/* + * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_QUIC_H +# define OPENSSL_QUIC_H +# pragma once + +# include +# include + +# ifndef OPENSSL_NO_QUIC + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Method used for non-thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_method(void); +/* + * Method used for thread-assisted QUIC client operation. + */ +__owur const SSL_METHOD *OSSL_QUIC_client_thread_method(void); + +# ifdef __cplusplus +} +# endif + +# endif /* OPENSSL_NO_QUIC */ +#endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rand.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rand.h index 90e0f0a0..1fa1129e 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rand.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rand.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rsa.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rsa.h index d0c95992..167427d3 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rsa.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/rsa.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -189,6 +189,8 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); # define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_RSA_IMPLICIT_REJECTION (EVP_PKEY_ALG_CTRL + 14) + # define RSA_PKCS1_PADDING 1 # define RSA_NO_PADDING 3 # define RSA_PKCS1_OAEP_PADDING 4 @@ -198,6 +200,9 @@ int EVP_PKEY_CTX_get0_rsa_oaep_label(EVP_PKEY_CTX *ctx, unsigned char **label); # define RSA_PKCS1_PSS_PADDING 6 # define RSA_PKCS1_WITH_TLS_PADDING 7 +/* internal RSA_ only */ +# define RSA_PKCS1_NO_IMPLICIT_REJECT_PADDING 8 + # define RSA_PKCS1_PADDING_SIZE 11 # define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sha.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sha.h index 6e65a040..163a7d58 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sha.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sha.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -81,6 +81,7 @@ OSSL_DEPRECATEDIN_3_0 void SHA256_Transform(SHA256_CTX *c, unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +# define SHA256_192_DIGEST_LENGTH 24 # define SHA224_DIGEST_LENGTH 28 # define SHA256_DIGEST_LENGTH 32 # define SHA384_DIGEST_LENGTH 48 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/srtp.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/srtp.h index d64606e5..2c2c3344 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/srtp.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/srtp.h @@ -28,16 +28,28 @@ extern "C" { #endif -# define SRTP_AES128_CM_SHA1_80 0x0001 -# define SRTP_AES128_CM_SHA1_32 0x0002 -# define SRTP_AES128_F8_SHA1_80 0x0003 -# define SRTP_AES128_F8_SHA1_32 0x0004 -# define SRTP_NULL_SHA1_80 0x0005 -# define SRTP_NULL_SHA1_32 0x0006 +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 /* AEAD SRTP protection profiles from RFC 7714 */ -# define SRTP_AEAD_AES_128_GCM 0x0007 -# define SRTP_AEAD_AES_256_GCM 0x0008 +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +/* DOUBLE AEAD SRTP protection profiles from RFC 8723 */ +# define SRTP_DOUBLE_AEAD_AES_128_GCM_AEAD_AES_128_GCM 0x0009 +# define SRTP_DOUBLE_AEAD_AES_256_GCM_AEAD_AES_256_GCM 0x000A + +/* ARIA SRTP protection profiles from RFC 8269 */ +# define SRTP_ARIA_128_CTR_HMAC_SHA1_80 0x000B +# define SRTP_ARIA_128_CTR_HMAC_SHA1_32 0x000C +# define SRTP_ARIA_256_CTR_HMAC_SHA1_80 0x000D +# define SRTP_ARIA_256_CTR_HMAC_SHA1_32 0x000E +# define SRTP_AEAD_ARIA_128_GCM 0x000F +# define SRTP_AEAD_ARIA_256_GCM 0x0010 # ifndef OPENSSL_NO_SRTP diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h index 942f20e6..2b43485f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/ssl.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -24,6 +24,7 @@ # endif # include +# include # include # include # include @@ -281,28 +282,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -433,6 +437,17 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) /* * Option "collections." @@ -577,6 +592,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -968,6 +985,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -1069,6 +1087,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1078,6 +1097,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1088,10 +1108,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1383,6 +1405,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 @@ -1488,6 +1511,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ @@ -1552,6 +1577,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1786,6 +1812,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1843,6 +1872,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1935,6 +1966,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1989,6 +2022,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2297,6 +2331,105 @@ size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2596,6 +2729,36 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h.in index f03f52fb..9f91039f 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -25,6 +25,7 @@ use OpenSSL::stackhash qw(generate_stack_macros generate_const_stack_macros); # endif # include +# include # include # include # include @@ -258,28 +259,31 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, /* Extension context codes */ /* This extension is only allowed in TLS */ -#define SSL_EXT_TLS_ONLY 0x0001 +#define SSL_EXT_TLS_ONLY 0x00001 /* This extension is only allowed in DTLS */ -#define SSL_EXT_DTLS_ONLY 0x0002 +#define SSL_EXT_DTLS_ONLY 0x00002 /* Some extensions may be allowed in DTLS but we don't implement them for it */ -#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x00004 /* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ -#define SSL_EXT_SSL3_ALLOWED 0x0008 +#define SSL_EXT_SSL3_ALLOWED 0x00008 /* Extension is only defined for TLS1.2 and below */ -#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x00010 /* Extension is only defined for TLS1.3 and above */ -#define SSL_EXT_TLS1_3_ONLY 0x0020 +#define SSL_EXT_TLS1_3_ONLY 0x00020 /* Ignore this extension during parsing if we are resuming */ -#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 -#define SSL_EXT_CLIENT_HELLO 0x0080 +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x00040 +#define SSL_EXT_CLIENT_HELLO 0x00080 /* Really means TLS1.2 or below */ -#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 -#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 -#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 -#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 -#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 -#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 -#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x00100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x00200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x00400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x00800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x01000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x02000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x04000 +#define SSL_EXT_TLS1_3_CERTIFICATE_COMPRESSION 0x08000 +/* When sending a raw public key in a certificate message */ +#define SSL_EXT_TLS1_3_RAW_PUBLIC_KEY 0x10000 /* Typedefs for handling custom extensions */ @@ -410,6 +414,17 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); * interoperability with CryptoPro CSP 3.x */ # define SSL_OP_CRYPTOPRO_TLSEXT_BUG SSL_OP_BIT(31) +/* + * Disable RFC8879 certificate compression + * SSL_OP_NO_TX_CERTIFICATE_COMPRESSION: don't send compressed certificates, + * and ignore the extension when received. + * SSL_OP_NO_RX_CERTIFICATE_COMPRESSION: don't send the extension, and + * subsequently indicating that receiving is not supported + */ +# define SSL_OP_NO_TX_CERTIFICATE_COMPRESSION SSL_OP_BIT(32) +# define SSL_OP_NO_RX_CERTIFICATE_COMPRESSION SSL_OP_BIT(33) + /* Enable KTLS TX zerocopy on Linux */ +# define SSL_OP_ENABLE_KTLS_TX_ZEROCOPY_SENDFILE SSL_OP_BIT(34) /* * Option "collections." @@ -554,6 +569,8 @@ typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); # define CERT_PKEY_CERT_TYPE 0x400 /* Cert chain suitable to Suite B */ # define CERT_PKEY_SUITEB 0x800 +/* Cert pkey valid for raw public key use */ +# define CERT_PKEY_RPK 0x1000 # define SSL_CONF_FLAG_CMDLINE 0x1 # define SSL_CONF_FLAG_FILE 0x2 @@ -945,6 +962,7 @@ uint32_t SSL_get_recv_max_early_data(const SSL *s); # include /* This is mostly sslv3 with a few tweaks */ # include /* Datagram TLS */ # include /* Support for the use_srtp extension */ +# include #ifdef __cplusplus extern "C" { @@ -997,6 +1015,7 @@ typedef enum { DTLS_ST_CR_HELLO_VERIFY_REQUEST, TLS_ST_CR_SRVR_HELLO, TLS_ST_CR_CERT, + TLS_ST_CR_COMP_CERT, TLS_ST_CR_CERT_STATUS, TLS_ST_CR_KEY_EXCH, TLS_ST_CR_CERT_REQ, @@ -1006,6 +1025,7 @@ typedef enum { TLS_ST_CR_FINISHED, TLS_ST_CW_CLNT_HELLO, TLS_ST_CW_CERT, + TLS_ST_CW_COMP_CERT, TLS_ST_CW_KEY_EXCH, TLS_ST_CW_CERT_VRFY, TLS_ST_CW_CHANGE, @@ -1016,10 +1036,12 @@ typedef enum { DTLS_ST_SW_HELLO_VERIFY_REQUEST, TLS_ST_SW_SRVR_HELLO, TLS_ST_SW_CERT, + TLS_ST_SW_COMP_CERT, TLS_ST_SW_KEY_EXCH, TLS_ST_SW_CERT_REQ, TLS_ST_SW_SRVR_DONE, TLS_ST_SR_CERT, + TLS_ST_SR_COMP_CERT, TLS_ST_SR_KEY_EXCH, TLS_ST_SR_CERT_VRFY, TLS_ST_SR_NEXT_PROTO, @@ -1311,6 +1333,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_CTRL_GET_SIGNATURE_NID 132 # define SSL_CTRL_GET_TMP_KEY 133 # define SSL_CTRL_GET_NEGOTIATED_GROUP 134 +# define SSL_CTRL_GET_IANA_GROUPS 135 # define SSL_CTRL_SET_RETRY_VERIFY 136 # define SSL_CTRL_GET_VERIFY_CERT_STORE 137 # define SSL_CTRL_GET_CHAIN_CERT_STORE 138 @@ -1416,6 +1439,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get1_groups(s, glist) \ SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_get0_iana_groups(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_IANA_GROUPS,0,(uint16_t **)(plst)) # define SSL_CTX_set1_groups(ctx, glist, glistlen) \ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) # define SSL_CTX_set1_groups_list(ctx, s) \ @@ -1480,6 +1505,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) # define SSL_get_max_proto_version(s) \ SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +const char *SSL_get0_group_name(SSL *s); const char *SSL_group_to_name(SSL *s, int id); /* Backwards compatibility, original 1.1.0 names */ @@ -1714,6 +1740,9 @@ __owur int SSL_has_matching_session_id(const SSL *s, unsigned int id_len); SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length); +SSL_SESSION *d2i_SSL_SESSION_ex(SSL_SESSION **a, const unsigned char **pp, + long length, OSSL_LIB_CTX *libctx, + const char *propq); # ifdef OPENSSL_X509_H __owur X509 *SSL_get0_peer_certificate(const SSL *s); @@ -1771,6 +1800,8 @@ __owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, SSL *SSL_new(SSL_CTX *ctx); int SSL_up_ref(SSL *s); int SSL_is_dtls(const SSL *s); +int SSL_is_tls(const SSL *s); +int SSL_is_quic(const SSL *s); __owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); @@ -1863,6 +1894,8 @@ size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); size_t SSL_client_hello_get0_compression_methods(SSL *s, const unsigned char **out); int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get_extension_order(SSL *s, uint16_t *exts, + size_t *num_exts); int SSL_client_hello_get0_ext(SSL *s, unsigned int type, const unsigned char **out, size_t *outlen); @@ -1917,6 +1950,7 @@ __owur int SSL_get_early_data_status(const SSL *s); __owur int SSL_get_error(const SSL *s, int ret_code); __owur const char *SSL_get_version(const SSL *s); +__owur int SSL_get_handshake_rtt(const SSL *s, uint64_t *rtt); /* This sets the 'default' SSL version that SSL_new() will create */ # ifndef OPENSSL_NO_DEPRECATED_3_0 @@ -2225,6 +2259,105 @@ size_t SSL_get_num_tickets(const SSL *s); int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); +/* QUIC support */ +int SSL_handle_events(SSL *s); +__owur int SSL_get_event_timeout(SSL *s, struct timeval *tv, int *is_infinite); +__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc); +__owur int SSL_net_read_desired(SSL *s); +__owur int SSL_net_write_desired(SSL *s); +__owur int SSL_set_blocking_mode(SSL *s, int blocking); +__owur int SSL_get_blocking_mode(SSL *s); +__owur int SSL_set1_initial_peer_addr(SSL *s, const BIO_ADDR *peer_addr); +__owur SSL *SSL_get0_connection(SSL *s); +__owur int SSL_is_connection(SSL *s); + +#define SSL_STREAM_TYPE_NONE 0 +#define SSL_STREAM_TYPE_READ (1U << 0) +#define SSL_STREAM_TYPE_WRITE (1U << 1) +#define SSL_STREAM_TYPE_BIDI (SSL_STREAM_TYPE_READ | SSL_STREAM_TYPE_WRITE) +__owur int SSL_get_stream_type(SSL *s); + +__owur uint64_t SSL_get_stream_id(SSL *s); +__owur int SSL_is_stream_local(SSL *s); + +#define SSL_DEFAULT_STREAM_MODE_NONE 0 +#define SSL_DEFAULT_STREAM_MODE_AUTO_BIDI 1 +#define SSL_DEFAULT_STREAM_MODE_AUTO_UNI 2 +__owur int SSL_set_default_stream_mode(SSL *s, uint32_t mode); + +#define SSL_STREAM_FLAG_UNI (1U << 0) +#define SSL_STREAM_FLAG_NO_BLOCK (1U << 1) +#define SSL_STREAM_FLAG_ADVANCE (1U << 2) +__owur SSL *SSL_new_stream(SSL *s, uint64_t flags); + +#define SSL_INCOMING_STREAM_POLICY_AUTO 0 +#define SSL_INCOMING_STREAM_POLICY_ACCEPT 1 +#define SSL_INCOMING_STREAM_POLICY_REJECT 2 +__owur int SSL_set_incoming_stream_policy(SSL *s, int policy, uint64_t aec); + +#define SSL_ACCEPT_STREAM_NO_BLOCK (1U << 0) +__owur SSL *SSL_accept_stream(SSL *s, uint64_t flags); +__owur size_t SSL_get_accept_stream_queue_len(SSL *s); + +# ifndef OPENSSL_NO_QUIC +__owur int SSL_inject_net_dgram(SSL *s, const unsigned char *buf, + size_t buf_len, + const BIO_ADDR *peer, + const BIO_ADDR *local); +# endif + +typedef struct ssl_shutdown_ex_args_st { + uint64_t quic_error_code; + const char *quic_reason; +} SSL_SHUTDOWN_EX_ARGS; + +#define SSL_SHUTDOWN_FLAG_RAPID (1U << 0) +#define SSL_SHUTDOWN_FLAG_NO_STREAM_FLUSH (1U << 1) +#define SSL_SHUTDOWN_FLAG_NO_BLOCK (1U << 2) +#define SSL_SHUTDOWN_FLAG_WAIT_PEER (1U << 3) + +__owur int SSL_shutdown_ex(SSL *ssl, uint64_t flags, + const SSL_SHUTDOWN_EX_ARGS *args, + size_t args_len); + +__owur int SSL_stream_conclude(SSL *ssl, uint64_t flags); + +typedef struct ssl_stream_reset_args_st { + uint64_t quic_error_code; +} SSL_STREAM_RESET_ARGS; + +__owur int SSL_stream_reset(SSL *ssl, + const SSL_STREAM_RESET_ARGS *args, + size_t args_len); + +#define SSL_STREAM_STATE_NONE 0 +#define SSL_STREAM_STATE_OK 1 +#define SSL_STREAM_STATE_WRONG_DIR 2 +#define SSL_STREAM_STATE_FINISHED 3 +#define SSL_STREAM_STATE_RESET_LOCAL 4 +#define SSL_STREAM_STATE_RESET_REMOTE 5 +#define SSL_STREAM_STATE_CONN_CLOSED 6 +__owur int SSL_get_stream_read_state(SSL *ssl); +__owur int SSL_get_stream_write_state(SSL *ssl); + +__owur int SSL_get_stream_read_error_code(SSL *ssl, uint64_t *app_error_code); +__owur int SSL_get_stream_write_error_code(SSL *ssl, uint64_t *app_error_code); + +#define SSL_CONN_CLOSE_FLAG_LOCAL (1U << 0) +#define SSL_CONN_CLOSE_FLAG_TRANSPORT (1U << 1) + +typedef struct ssl_conn_close_info_st { + uint64_t error_code, frame_type; + const char *reason; + size_t reason_len; + uint32_t flags; +} SSL_CONN_CLOSE_INFO; + +__owur int SSL_get_conn_close_info(SSL *ssl, + SSL_CONN_CLOSE_INFO *info, + size_t info_len); + # ifndef OPENSSL_NO_DEPRECATED_1_1_0 # define SSL_cache_hit(s) SSL_session_reused(s) # endif @@ -2524,6 +2657,36 @@ void SSL_set_allow_early_data_cb(SSL *s, const char *OSSL_default_cipher_list(void); const char *OSSL_default_ciphersuites(void); +/* RFC8879 Certificate compression APIs */ + +int SSL_CTX_compress_certs(SSL_CTX *ctx, int alg); +int SSL_compress_certs(SSL *ssl, int alg); + +int SSL_CTX_set1_cert_comp_preference(SSL_CTX *ctx, int *algs, size_t len); +int SSL_set1_cert_comp_preference(SSL *ssl, int *algs, size_t len); + +int SSL_CTX_set1_compressed_cert(SSL_CTX *ctx, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +int SSL_set1_compressed_cert(SSL *ssl, int algorithm, unsigned char *comp_data, + size_t comp_length, size_t orig_length); +size_t SSL_CTX_get1_compressed_cert(SSL_CTX *ctx, int alg, unsigned char **data, size_t *orig_len); +size_t SSL_get1_compressed_cert(SSL *ssl, int alg, unsigned char **data, size_t *orig_len); + +__owur int SSL_add_expected_rpk(SSL *s, EVP_PKEY *rpk); +__owur EVP_PKEY *SSL_get0_peer_rpk(const SSL *s); +__owur EVP_PKEY *SSL_SESSION_get0_peer_rpk(SSL_SESSION *s); +__owur int SSL_get_negotiated_client_cert_type(const SSL *s); +__owur int SSL_get_negotiated_server_cert_type(const SSL *s); + +__owur int SSL_set1_client_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_set1_server_cert_type(SSL *s, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_client_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_CTX_set1_server_cert_type(SSL_CTX *ctx, const unsigned char *val, size_t len); +__owur int SSL_get0_client_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_get0_server_cert_type(const SSL *s, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_client_cert_type(const SSL_CTX *ctx, unsigned char **t, size_t *len); +__owur int SSL_CTX_get0_server_cert_type(const SSL_CTX *s, unsigned char **t, size_t *len); + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl3.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl3.h index 49bd51f2..4f076c6c 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl3.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ssl3.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -239,6 +239,13 @@ extern "C" { # define SSL3_RT_HEADER 0x100 # define SSL3_RT_INNER_CONTENT_TYPE 0x101 +/* Pseudo content types for QUIC */ +# define SSL3_RT_QUIC_DATAGRAM 0x200 +# define SSL3_RT_QUIC_PACKET 0x201 +# define SSL3_RT_QUIC_FRAME_FULL 0x202 +# define SSL3_RT_QUIC_FRAME_HEADER 0x203 +# define SSL3_RT_QUIC_FRAME_PADDING 0x204 + # define SSL3_AL_WARNING 1 # define SSL3_AL_FATAL 2 @@ -300,6 +307,8 @@ extern "C" { /* Set if extended master secret extension required on renegotiation */ # define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 +/* 0x2000 is reserved for TLS1_FLAGS_QUIC (internal) */ + # define SSL3_MT_HELLO_REQUEST 0 # define SSL3_MT_CLIENT_HELLO 1 # define SSL3_MT_SERVER_HELLO 2 @@ -317,6 +326,7 @@ extern "C" { # define SSL3_MT_CERTIFICATE_STATUS 22 # define SSL3_MT_SUPPLEMENTAL_DATA 23 # define SSL3_MT_KEY_UPDATE 24 +# define SSL3_MT_COMPRESSED_CERTIFICATE 25 # ifndef OPENSSL_NO_NEXTPROTONEG # define SSL3_MT_NEXT_PROTO 67 # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sslerr.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sslerr.h index f1882558..e1eb9a56 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sslerr.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/sslerr.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -25,8 +25,10 @@ # define SSL_R_APP_DATA_IN_HANDSHAKE 100 # define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 # define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CERTIFICATE 348 # define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 # define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_COMPRESSION_ALGORITHM 326 # define SSL_R_BAD_DATA 390 # define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 # define SSL_R_BAD_DECOMPRESSION 107 @@ -82,6 +84,7 @@ # define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 # define SSL_R_COMPRESSION_LIBRARY_ERROR 142 # define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_CONN_USE_ONLY 356 # define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 # define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 # define SSL_R_COOKIE_MISMATCH 308 @@ -110,6 +113,7 @@ # define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 # define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 # define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_RAW_PUBLIC_KEY 349 # define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 # define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 # define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 @@ -119,6 +123,7 @@ # define SSL_R_EXTENSION_NOT_RECEIVED 279 # define SSL_R_EXTRA_DATA_IN_MESSAGE 153 # define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_GET_PARAMETER 316 # define SSL_R_FAILED_TO_INIT_ASYNC 405 # define SSL_R_FRAGMENTED_CLIENT_HELLO 401 # define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 @@ -144,6 +149,8 @@ # define SSL_R_INVALID_KEY_UPDATE_TYPE 120 # define SSL_R_INVALID_MAX_EARLY_DATA 174 # define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_RAW_PUBLIC_KEY 350 +# define SSL_R_INVALID_RECORD 317 # define SSL_R_INVALID_SEQUENCE_NUMBER 402 # define SSL_R_INVALID_SERVERINFO_DATA 388 # define SSL_R_INVALID_SESSION_ID 999 @@ -156,6 +163,7 @@ # define SSL_R_LENGTH_TOO_SHORT 160 # define SSL_R_LIBRARY_BUG 274 # define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED 395 # define SSL_R_MISSING_DSA_SIGNING_CERT 165 # define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 # define SSL_R_MISSING_FATAL 256 @@ -196,9 +204,11 @@ # define SSL_R_NO_SHARED_GROUPS 410 # define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 # define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_STREAM 355 # define SSL_R_NO_SUITABLE_DIGEST_ALGORITHM 297 # define SSL_R_NO_SUITABLE_GROUPS 295 # define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_RECORD_LAYER 322 # define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 # define SSL_R_NO_VALID_SCTS 216 # define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 @@ -221,10 +231,16 @@ # define SSL_R_PSK_IDENTITY_NOT_FOUND 223 # define SSL_R_PSK_NO_CLIENT_CB 224 # define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_QUIC_HANDSHAKE_LAYER_ERROR 393 +# define SSL_R_QUIC_NETWORK_ERROR 387 +# define SSL_R_QUIC_PROTOCOL_ERROR 382 # define SSL_R_READ_BIO_NOT_SET 211 # define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORDS_NOT_RELEASED 321 +# define SSL_R_RECORD_LAYER_FAILURE 313 # define SSL_R_RECORD_LENGTH_MISMATCH 213 # define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_REMOTE_PEER_ADDRESS_NOT_SET 346 # define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 # define SSL_R_RENEGOTIATION_ENCODING_ERR 336 # define SSL_R_RENEGOTIATION_MISMATCH 337 @@ -234,6 +250,7 @@ # define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 # define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 # define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SEQUENCE_CTR_WRAPPED 327 # define SSL_R_SERVERHELLO_TLSEXT 275 # define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 # define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 @@ -273,6 +290,11 @@ # define SSL_R_SSL_SESSION_ID_TOO_LONG 408 # define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 # define SSL_R_STILL_IN_INIT 121 +# define SSL_R_STREAM_COUNT_LIMITED 411 +# define SSL_R_STREAM_FINISHED 365 +# define SSL_R_STREAM_RECV_ONLY 366 +# define SSL_R_STREAM_RESET 375 +# define SSL_R_STREAM_SEND_ONLY 379 # define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 # define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 # define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 @@ -316,6 +338,7 @@ # define SSL_R_UNKNOWN_COMMAND 139 # define SSL_R_UNKNOWN_DIGEST 368 # define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_MANDATORY_PARAMETER 323 # define SSL_R_UNKNOWN_PKEY_TYPE 251 # define SSL_R_UNKNOWN_PROTOCOL 252 # define SSL_R_UNKNOWN_SSL_VERSION 254 @@ -333,6 +356,7 @@ # define SSL_R_WRONG_CERTIFICATE_TYPE 383 # define SSL_R_WRONG_CIPHER_RETURNED 261 # define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_RPK_TYPE 351 # define SSL_R_WRONG_SIGNATURE_LENGTH 264 # define SSL_R_WRONG_SIGNATURE_SIZE 265 # define SSL_R_WRONG_SIGNATURE_TYPE 370 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/store.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/store.h index 3c1445e0..e6ea3cf8 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/store.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/store.h @@ -1,5 +1,5 @@ /* - * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -98,6 +98,14 @@ OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, */ OSSL_STORE_INFO *OSSL_STORE_load(OSSL_STORE_CTX *ctx); +/* + * Deletes the object in the store by URI. + * Returns 1 on success, 0 otherwise. + */ +int OSSL_STORE_delete(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + const OSSL_PARAM params[]); + /* * Check if end of data (end of file) is reached * Returns 1 on end, 0 otherwise. @@ -345,7 +353,7 @@ int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, OSSL_DEPRECATEDIN_3_0 const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); OSSL_DEPRECATEDIN_3_0 -const char * OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); OSSL_DEPRECATEDIN_3_0 int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); OSSL_DEPRECATEDIN_3_0 diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/thread.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/thread.h new file mode 100644 index 00000000..3926ce54 --- /dev/null +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/thread.h @@ -0,0 +1,31 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef OPENSSL_THREAD_H +# define OPENSSL_THREAD_H + +# define OSSL_THREAD_SUPPORT_FLAG_THREAD_POOL (1U<<0) +# define OSSL_THREAD_SUPPORT_FLAG_DEFAULT_SPAWN (1U<<1) + +# include + +# ifdef __cplusplus +extern "C" { +# endif + +uint32_t OSSL_get_thread_support_flags(void); +int OSSL_set_max_threads(OSSL_LIB_CTX *ctx, uint64_t max_threads); +uint64_t OSSL_get_max_threads(OSSL_LIB_CTX *ctx); + +# ifdef __cplusplus +} +# endif + +#endif /* OPENSSL_THREAD_H */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/tls1.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/tls1.h index 793155e1..7e3d1a72 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/tls1.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/tls1.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -28,7 +28,7 @@ extern "C" { /* Default security level if not overridden at config time */ # ifndef OPENSSL_TLS_SECURITY_LEVEL -# define OPENSSL_TLS_SECURITY_LEVEL 1 +# define OPENSSL_TLS_SECURITY_LEVEL 2 # endif /* TLS*_VERSION constants are defined in prov_ssl.h */ @@ -122,6 +122,14 @@ extern "C" { */ # define TLSEXT_TYPE_signed_certificate_timestamp 18 +/* + * Extension type for Raw Public Keys + * https://tools.ietf.org/html/rfc7250 + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml + */ +# define TLSEXT_TYPE_client_cert_type 19 +# define TLSEXT_TYPE_server_cert_type 20 + /* * ExtensionType value for TLS padding extension. * http://tools.ietf.org/html/draft-agl-tls-padding @@ -134,6 +142,9 @@ extern "C" { /* ExtensionType value from RFC7627 */ # define TLSEXT_TYPE_extended_master_secret 23 +/* ExtensionType value from RFC8879 */ +# define TLSEXT_TYPE_compress_certificate 27 + /* ExtensionType value from RFC4507 */ # define TLSEXT_TYPE_session_ticket 35 @@ -147,6 +158,7 @@ extern "C" { # define TLSEXT_TYPE_post_handshake_auth 49 # define TLSEXT_TYPE_signature_algorithms_cert 50 # define TLSEXT_TYPE_key_share 51 +# define TLSEXT_TYPE_quic_transport_parameters 57 /* Temporary extension type */ # define TLSEXT_TYPE_renegotiate 0xff01 @@ -195,6 +207,15 @@ extern "C" { # define TLSEXT_hash_num 10 +/* Possible compression values from RFC8879 */ +/* Not defined in RFC8879, but used internally for no-compression */ +# define TLSEXT_comp_cert_none 0 +# define TLSEXT_comp_cert_zlib 1 +# define TLSEXT_comp_cert_brotli 2 +# define TLSEXT_comp_cert_zstd 3 +/* one more than the number of defined values - used as size of 0-terminated array */ +# define TLSEXT_comp_cert_limit 4 + /* Flag set for unrecognised algorithms */ # define TLSEXT_nid_unknown 0x1000000 @@ -211,6 +232,15 @@ extern "C" { # define TLSEXT_max_fragment_length_2048 3 # define TLSEXT_max_fragment_length_4096 4 +/* + * TLS Certificate Type (for RFC7250) + * https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 + */ +# define TLSEXT_cert_type_x509 0 +# define TLSEXT_cert_type_pgp 1 /* recognized, but not supported */ +# define TLSEXT_cert_type_rpk 2 +# define TLSEXT_cert_type_1609dot2 3 /* recognized, but not supported */ + int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/trace.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/trace.h index 97e13857..9a5b56ea 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/trace.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/trace.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -305,6 +305,14 @@ void OSSL_trace_end(int category, BIO *channel); # define OSSL_TRACE9(category, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) \ OSSL_TRACEV(category, (trc_out, format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)) +#define OSSL_TRACE_STRING_MAX 80 +int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); +#define OSSL_TRACE_STRING(category, text, full, data, len) \ + OSSL_TRACE_BEGIN(category) { \ + OSSL_trace_string(trc_out, text, full, data, len); \ + } OSSL_TRACE_END(category) + # ifdef __cplusplus } # endif diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ts.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ts.h index 8ff67332..b09b646d 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ts.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/ts.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/types.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/types.h index 5f9d8c23..c2802868 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/types.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/types.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h index 483cb9d5..ac132633 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509.h.in * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -606,6 +606,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -654,6 +656,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -887,7 +891,7 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); @@ -953,13 +957,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1265,6 +1270,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h.in index d4df2adc..72103913 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -412,6 +412,8 @@ EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); int i2d_PUBKEY_fp(FILE *fp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); # endif @@ -460,6 +462,8 @@ EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, const char *propq); EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, + const char *propq); EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); DECLARE_ASN1_DUP_FUNCTION(X509) @@ -693,7 +697,7 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); -EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(const X509_REQ *req); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); @@ -759,13 +763,14 @@ X509_REVOKED_get0_extensions(const X509_REVOKED *r); X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); -int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); +int X509_REQ_check_private_key(const X509_REQ *req, EVP_PKEY *pkey); -int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_check_private_key(const X509 *cert, const EVP_PKEY *pkey); int X509_chain_check_suiteb(int *perror_depth, X509 *x, STACK_OF(X509) *chain, unsigned long flags); int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs); STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); @@ -1071,6 +1076,8 @@ int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); +void X509_PUBKEY_set0_public_key(X509_PUBKEY *pub, + unsigned char *penc, int penclen); int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, int ptype, void *pval, unsigned char *penc, int penclen); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h index 29b0e147..d3dfff8c 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h @@ -2,7 +2,7 @@ * WARNING: do not edit! * Generated by Makefile from include/openssl/x509_vfy.h.in * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -411,6 +411,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -491,71 +492,71 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -565,11 +566,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -579,6 +583,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -600,7 +606,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -685,8 +691,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -730,23 +736,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -764,6 +768,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -773,6 +778,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h.in index 80f18bd7..7a478d11 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509_vfy.h.in @@ -1,7 +1,7 @@ /* * {- join("\n * ", @autowarntext) -} * - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -314,6 +314,7 @@ X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ # define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 # define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 # define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 +# define X509_V_ERR_RPK_UNTRUSTED 95 /* Certificate verify flags */ # ifndef OPENSSL_NO_DEPRECATED_1_1_0 @@ -394,71 +395,71 @@ int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); X509_CRL *X509_OBJECT_get0_X509_CRL(const X509_OBJECT *a); int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); X509_STORE *X509_STORE_new(void); -void X509_STORE_free(X509_STORE *v); -int X509_STORE_lock(X509_STORE *ctx); -int X509_STORE_unlock(X509_STORE *ctx); -int X509_STORE_up_ref(X509_STORE *v); -STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *v); -STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); -STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, +void X509_STORE_free(X509_STORE *xs); +int X509_STORE_lock(X509_STORE *xs); +int X509_STORE_unlock(X509_STORE *xs); +int X509_STORE_up_ref(X509_STORE *xs); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs); +STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs); +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *xs, const X509_NAME *nm); STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, const X509_NAME *nm); -int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); -int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); -int X509_STORE_set_trust(X509_STORE *ctx, int trust); -int X509_STORE_set1_param(X509_STORE *ctx, const X509_VERIFY_PARAM *pm); -X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *ctx); +int X509_STORE_set_flags(X509_STORE *xs, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *xs, int purpose); +int X509_STORE_set_trust(X509_STORE *xs, int trust); +int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs); -void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +void X509_STORE_set_verify(X509_STORE *xs, X509_STORE_CTX_verify_fn verify); #define X509_STORE_set_verify_func(ctx, func) \ X509_STORE_set_verify((ctx),(func)) void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, X509_STORE_CTX_verify_fn verify); -X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *ctx); -void X509_STORE_set_verify_cb(X509_STORE *ctx, +X509_STORE_CTX_verify_fn X509_STORE_get_verify(const X509_STORE *xs); +void X509_STORE_set_verify_cb(X509_STORE *xs, X509_STORE_CTX_verify_cb verify_cb); # define X509_STORE_set_verify_cb_func(ctx,func) \ X509_STORE_set_verify_cb((ctx),(func)) -X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *ctx); -void X509_STORE_set_get_issuer(X509_STORE *ctx, +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(const X509_STORE *xs); +void X509_STORE_set_get_issuer(X509_STORE *xs, X509_STORE_CTX_get_issuer_fn get_issuer); -X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *ctx); -void X509_STORE_set_check_issued(X509_STORE *ctx, +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(const X509_STORE *xs); +void X509_STORE_set_check_issued(X509_STORE *xs, X509_STORE_CTX_check_issued_fn check_issued); -X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *ctx); -void X509_STORE_set_check_revocation(X509_STORE *ctx, +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(const X509_STORE *s); +void X509_STORE_set_check_revocation(X509_STORE *xs, X509_STORE_CTX_check_revocation_fn check_revocation); X509_STORE_CTX_check_revocation_fn - X509_STORE_get_check_revocation(const X509_STORE *ctx); -void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_get_check_revocation(const X509_STORE *xs); +void X509_STORE_set_get_crl(X509_STORE *xs, X509_STORE_CTX_get_crl_fn get_crl); -X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *ctx); -void X509_STORE_set_check_crl(X509_STORE *ctx, +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(const X509_STORE *xs); +void X509_STORE_set_check_crl(X509_STORE *xs, X509_STORE_CTX_check_crl_fn check_crl); -X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *ctx); -void X509_STORE_set_cert_crl(X509_STORE *ctx, +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(const X509_STORE *xs); +void X509_STORE_set_cert_crl(X509_STORE *xs, X509_STORE_CTX_cert_crl_fn cert_crl); -X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *ctx); -void X509_STORE_set_check_policy(X509_STORE *ctx, +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(const X509_STORE *xs); +void X509_STORE_set_check_policy(X509_STORE *xs, X509_STORE_CTX_check_policy_fn check_policy); -X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *ctx); -void X509_STORE_set_lookup_certs(X509_STORE *ctx, +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(const X509_STORE *s); +void X509_STORE_set_lookup_certs(X509_STORE *xs, X509_STORE_CTX_lookup_certs_fn lookup_certs); -X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *ctx); -void X509_STORE_set_lookup_crls(X509_STORE *ctx, +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(const X509_STORE *s); +void X509_STORE_set_lookup_crls(X509_STORE *xs, X509_STORE_CTX_lookup_crls_fn lookup_crls); #define X509_STORE_set_lookup_crls_cb(ctx, func) \ X509_STORE_set_lookup_crls((ctx), (func)) -X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *ctx); -void X509_STORE_set_cleanup(X509_STORE *ctx, +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(const X509_STORE *xs); +void X509_STORE_set_cleanup(X509_STORE *xs, X509_STORE_CTX_cleanup_fn cleanup); -X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(const X509_STORE *xs); #define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) -int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); -void *X509_STORE_get_ex_data(const X509_STORE *ctx, int idx); +int X509_STORE_set_ex_data(X509_STORE *xs, int idx, void *data); +void *X509_STORE_get_ex_data(const X509_STORE *xs, int idx); X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); X509_STORE_CTX *X509_STORE_CTX_new(void); @@ -468,11 +469,14 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); void X509_STORE_CTX_free(X509_STORE_CTX *ctx); int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *trust_store, X509 *target, STACK_OF(X509) *untrusted); +int X509_STORE_CTX_init_rpk(X509_STORE_CTX *ctx, X509_STORE *trust_store, + EVP_PKEY* rpk); void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx); X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); +EVP_PKEY *X509_STORE_CTX_get0_rpk(const X509_STORE_CTX *ctx); STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, @@ -482,6 +486,8 @@ X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_get_crl(X509_STORE_CTX *ctx, + X509_STORE_CTX_get_crl_fn get_crl); X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); @@ -503,7 +509,7 @@ X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); # define X509_STORE_get1_crl X509_STORE_CTX_get1_crls #endif -X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *xs, X509_LOOKUP_METHOD *m); X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); X509_LOOKUP_METHOD *X509_LOOKUP_file(void); X509_LOOKUP_METHOD *X509_LOOKUP_store(void); @@ -588,8 +594,8 @@ X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( const X509_LOOKUP_METHOD *method); -int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); -int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); +int X509_STORE_add_cert(X509_STORE *xs, X509 *x); +int X509_STORE_add_crl(X509_STORE *xs, X509_CRL *x); int X509_STORE_CTX_get_by_subject(const X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, @@ -633,23 +639,21 @@ void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); -int X509_STORE_load_file(X509_STORE *ctx, const char *file); -int X509_STORE_load_path(X509_STORE *ctx, const char *path); -int X509_STORE_load_store(X509_STORE *ctx, const char *store); -int X509_STORE_load_locations(X509_STORE *ctx, - const char *file, - const char *dir); -int X509_STORE_set_default_paths(X509_STORE *ctx); +int X509_STORE_load_file(X509_STORE *xs, const char *file); +int X509_STORE_load_path(X509_STORE *xs, const char *path); +int X509_STORE_load_store(X509_STORE *xs, const char *store); +int X509_STORE_load_locations(X509_STORE *s, const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *xs); -int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, +int X509_STORE_load_file_ex(X509_STORE *xs, const char *file, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, +int X509_STORE_load_store_ex(X509_STORE *xs, const char *store, OSSL_LIB_CTX *libctx, const char *propq); -int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, - const char *dir, OSSL_LIB_CTX *libctx, - const char *propq); -int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, - const char *propq); +int X509_STORE_load_locations_ex(X509_STORE *xs, + const char *file, const char *dir, + OSSL_LIB_CTX *libctx, const char *propq); +int X509_STORE_set_default_paths_ex(X509_STORE *xs, + OSSL_LIB_CTX *libctx, const char *propq); #define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) @@ -667,6 +671,7 @@ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); +void X509_STORE_CTX_set0_rpk(X509_STORE_CTX *ctx, EVP_PKEY *target); void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk); int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); @@ -676,6 +681,8 @@ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t); +void X509_STORE_CTX_set_current_reasons(X509_STORE_CTX *ctx, + unsigned int current_reasons); X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(const X509_STORE_CTX *ctx); int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509err.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509err.h index 34ead4b8..71b557a3 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509err.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h index 75016354..e64da7e0 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h @@ -742,9 +742,10 @@ SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h.in b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h.in index e33c9d30..56968037 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h.in +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3.h.in @@ -478,9 +478,10 @@ typedef struct x509_purpose_st { # define X509_PURPOSE_ANY 7 # define X509_PURPOSE_OCSP_HELPER 8 # define X509_PURPOSE_TIMESTAMP_SIGN 9 +# define X509_PURPOSE_CODE_SIGN 10 # define X509_PURPOSE_MIN 1 -# define X509_PURPOSE_MAX 9 +# define X509_PURPOSE_MAX 10 /* Flags for X509V3_EXT_print() */ diff --git a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3err.h b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3err.h index 1ae3a562..deede279 100644 --- a/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3err.h +++ b/deps/openssl/ios/iossimulator-xcrun/usr/local/include/openssl/x509v3err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -23,6 +23,8 @@ */ # define X509V3_R_BAD_IP_ADDRESS 118 # define X509V3_R_BAD_OBJECT 119 +# define X509V3_R_BAD_OPTION 170 +# define X509V3_R_BAD_VALUE 171 # define X509V3_R_BN_DEC2BN_ERROR 100 # define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 # define X509V3_R_DIRNAME_ERROR 149 @@ -86,6 +88,7 @@ # define X509V3_R_UNKNOWN_EXTENSION 129 # define X509V3_R_UNKNOWN_EXTENSION_NAME 130 # define X509V3_R_UNKNOWN_OPTION 120 +# define X509V3_R_UNKNOWN_VALUE 172 # define X509V3_R_UNSUPPORTED_OPTION 117 # define X509V3_R_UNSUPPORTED_TYPE 167 # define X509V3_R_USER_TOO_LONG 132 diff --git a/tools/ssl-ios b/tools/ssl-ios index 91092de2..1fb25b1c 100755 --- a/tools/ssl-ios +++ b/tools/ssl-ios @@ -1,6 +1,6 @@ #!/bin/sh -OPENSSL_VERSION=3.1.4 +OPENSSL_VERSION=3.2.0 API_LEVEL=28

BL}JzzeV1C9f;K{H>L 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