@fails-components/webtransport 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/readme.md +1 -3
- package/src/http3eventloop.cc +83 -9
- package/src/http3eventloop.h +13 -3
- package/src/http3server.cc +22 -22
- package/src/http3server.h +7 -20
- package/src/http3wtstreamvisitor.cc +31 -10
- package/src/http3wtstreamvisitor.h +38 -11
- package/src/webtransport.js +91 -23
- package/test/echoserver.js +29 -5
- package/test/testsuite.js +242 -220
- package/third_party/boringssl/src/CMakeLists.txt +2 -0
- package/third_party/boringssl/src/crypto/CMakeLists.txt +1 -0
- package/third_party/boringssl/src/crypto/asn1/a_bitstr.c +174 -177
- package/third_party/boringssl/src/crypto/asn1/a_bool.c +46 -48
- package/third_party/boringssl/src/crypto/asn1/a_d2i_fp.c +21 -23
- package/third_party/boringssl/src/crypto/asn1/a_dup.c +21 -23
- package/third_party/boringssl/src/crypto/asn1/a_gentm.c +84 -187
- package/third_party/boringssl/src/crypto/asn1/a_i2d_fp.c +19 -21
- package/third_party/boringssl/src/crypto/asn1/a_int.c +305 -329
- package/third_party/boringssl/src/crypto/asn1/a_mbstr.c +190 -195
- package/third_party/boringssl/src/crypto/asn1/a_object.c +182 -189
- package/third_party/boringssl/src/crypto/asn1/a_octet.c +6 -9
- package/third_party/boringssl/src/crypto/asn1/a_print.c +15 -16
- package/third_party/boringssl/src/crypto/asn1/a_strex.c +386 -399
- package/third_party/boringssl/src/crypto/asn1/a_strnid.c +110 -131
- package/third_party/boringssl/src/crypto/asn1/a_time.c +118 -111
- package/third_party/boringssl/src/crypto/asn1/a_type.c +59 -60
- package/third_party/boringssl/src/crypto/asn1/a_utctm.c +114 -186
- package/third_party/boringssl/src/crypto/asn1/a_utf8.c +171 -159
- package/third_party/boringssl/src/crypto/asn1/asn1_lib.c +245 -260
- package/third_party/boringssl/src/crypto/asn1/asn1_par.c +41 -40
- package/third_party/boringssl/src/crypto/asn1/asn1_test.cc +31 -0
- package/third_party/boringssl/src/crypto/asn1/asn_pack.c +31 -33
- package/third_party/boringssl/src/crypto/asn1/f_int.c +36 -33
- package/third_party/boringssl/src/crypto/asn1/f_string.c +29 -26
- package/third_party/boringssl/src/crypto/asn1/internal.h +62 -61
- package/third_party/boringssl/src/crypto/asn1/tasn_dec.c +706 -702
- package/third_party/boringssl/src/crypto/asn1/tasn_enc.c +507 -524
- package/third_party/boringssl/src/crypto/asn1/tasn_fre.c +141 -133
- package/third_party/boringssl/src/crypto/asn1/tasn_new.c +207 -199
- package/third_party/boringssl/src/crypto/asn1/tasn_typ.c +19 -22
- package/third_party/boringssl/src/crypto/asn1/tasn_utl.c +24 -24
- package/third_party/boringssl/src/crypto/asn1/time_support.c +13 -13
- package/third_party/boringssl/src/crypto/bio/connect.c +9 -3
- package/third_party/boringssl/src/crypto/bytestring/bytestring_test.cc +125 -1
- package/third_party/boringssl/src/crypto/bytestring/cbb.c +4 -7
- package/third_party/boringssl/src/crypto/bytestring/cbs.c +167 -9
- package/third_party/boringssl/src/crypto/cipher_extra/e_aesctrhmac.c +0 -2
- package/third_party/boringssl/src/crypto/cipher_extra/e_aesgcmsiv.c +23 -54
- package/third_party/boringssl/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -2
- package/third_party/boringssl/src/crypto/cipher_extra/e_tls.c +0 -2
- package/third_party/boringssl/src/crypto/curve25519/curve25519.c +6 -8
- package/third_party/boringssl/src/crypto/evp/evp_ctx.c +25 -22
- package/third_party/boringssl/src/crypto/evp/internal.h +15 -9
- package/third_party/boringssl/src/crypto/evp/p_dsa_asn1.c +2 -0
- package/third_party/boringssl/src/crypto/evp/p_ec_asn1.c +2 -0
- package/third_party/boringssl/src/crypto/evp/p_ed25519.c +3 -3
- package/third_party/boringssl/src/crypto/evp/p_ed25519_asn1.c +10 -7
- package/third_party/boringssl/src/crypto/evp/p_hkdf.c +241 -0
- package/third_party/boringssl/src/crypto/evp/p_rsa_asn1.c +2 -0
- package/third_party/boringssl/src/crypto/evp/p_x25519_asn1.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/aes/aes_nohw.c +9 -10
- package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +2 -6
- package/third_party/boringssl/src/crypto/fipsmodule/bn/exponentiation.c +5 -11
- package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +1 -1
- package/third_party/boringssl/src/crypto/fipsmodule/bn/prime.c +2 -0
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +10 -26
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aesccm.c +2 -3
- package/third_party/boringssl/src/crypto/fipsmodule/digestsign/digestsign.c +1 -0
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +44 -43
- package/third_party/boringssl/src/crypto/fipsmodule/modes/cbc.c +5 -9
- package/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c +14 -21
- package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +8 -8
- package/third_party/boringssl/src/crypto/fipsmodule/rand/internal.h +1 -4
- package/third_party/boringssl/src/crypto/hkdf/hkdf_test.cc +104 -0
- package/third_party/boringssl/src/crypto/internal.h +18 -4
- package/third_party/boringssl/src/crypto/lhash/internal.h +13 -1
- package/third_party/boringssl/src/crypto/obj/obj_dat.h +4 -1
- package/third_party/boringssl/src/crypto/obj/obj_mac.num +1 -0
- package/third_party/boringssl/src/crypto/obj/objects.txt +2 -0
- package/third_party/boringssl/src/crypto/pem/pem_all.c +77 -86
- package/third_party/boringssl/src/crypto/pem/pem_info.c +221 -233
- package/third_party/boringssl/src/crypto/pem/pem_lib.c +639 -608
- package/third_party/boringssl/src/crypto/pem/pem_oth.c +17 -16
- package/third_party/boringssl/src/crypto/pem/pem_pk8.c +133 -142
- package/third_party/boringssl/src/crypto/pem/pem_pkey.c +96 -92
- package/third_party/boringssl/src/crypto/poly1305/poly1305_vec.c +12 -28
- package/third_party/boringssl/src/crypto/siphash/siphash.c +8 -11
- package/third_party/boringssl/src/crypto/siphash/siphash_test.cc +5 -7
- package/third_party/boringssl/src/crypto/stack/stack.c +33 -16
- package/third_party/boringssl/src/crypto/thread_pthread.c +0 -2
- package/third_party/boringssl/src/crypto/thread_win.c +0 -2
- package/third_party/boringssl/src/crypto/trust_token/internal.h +14 -0
- package/third_party/boringssl/src/crypto/trust_token/pmbtoken.c +127 -30
- package/third_party/boringssl/src/crypto/trust_token/trust_token.c +40 -0
- package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +165 -0
- package/third_party/boringssl/src/crypto/trust_token/voprf.c +55 -6
- package/third_party/boringssl/src/crypto/x509/a_digest.c +23 -24
- package/third_party/boringssl/src/crypto/x509/a_sign.c +52 -55
- package/third_party/boringssl/src/crypto/x509/a_verify.c +33 -34
- package/third_party/boringssl/src/crypto/x509/algorithm.c +17 -18
- package/third_party/boringssl/src/crypto/x509/asn1_gen.c +618 -612
- package/third_party/boringssl/src/crypto/x509/by_dir.c +320 -337
- package/third_party/boringssl/src/crypto/x509/by_file.c +186 -186
- package/third_party/boringssl/src/crypto/x509/i2d_pr.c +11 -14
- package/third_party/boringssl/src/crypto/x509/internal.h +22 -22
- package/third_party/boringssl/src/crypto/x509/name_print.c +155 -150
- package/third_party/boringssl/src/crypto/x509/rsa_pss.c +27 -29
- package/third_party/boringssl/src/crypto/x509/t_crl.c +67 -70
- package/third_party/boringssl/src/crypto/x509/t_req.c +3 -5
- package/third_party/boringssl/src/crypto/x509/t_x509.c +280 -251
- package/third_party/boringssl/src/crypto/x509/t_x509a.c +52 -47
- package/third_party/boringssl/src/crypto/x509/x509.c +3 -4
- package/third_party/boringssl/src/crypto/x509/x509_att.c +234 -223
- package/third_party/boringssl/src/crypto/x509/x509_cmp.c +286 -296
- package/third_party/boringssl/src/crypto/x509/x509_d2.c +37 -32
- package/third_party/boringssl/src/crypto/x509/x509_def.c +14 -30
- package/third_party/boringssl/src/crypto/x509/x509_ext.c +55 -84
- package/third_party/boringssl/src/crypto/x509/x509_lu.c +545 -581
- package/third_party/boringssl/src/crypto/x509/x509_obj.c +131 -121
- package/third_party/boringssl/src/crypto/x509/x509_req.c +120 -139
- package/third_party/boringssl/src/crypto/x509/x509_set.c +128 -142
- package/third_party/boringssl/src/crypto/x509/x509_trs.c +185 -193
- package/third_party/boringssl/src/crypto/x509/x509_txt.c +70 -72
- package/third_party/boringssl/src/crypto/x509/x509_v3.c +172 -161
- package/third_party/boringssl/src/crypto/x509/x509_vfy.c +2041 -2053
- package/third_party/boringssl/src/crypto/x509/x509_vpm.c +441 -461
- package/third_party/boringssl/src/crypto/x509/x509cset.c +152 -170
- package/third_party/boringssl/src/crypto/x509/x509name.c +274 -260
- package/third_party/boringssl/src/crypto/x509/x509rset.c +43 -20
- package/third_party/boringssl/src/crypto/x509/x509spki.c +62 -63
- package/third_party/boringssl/src/crypto/x509/x_algor.c +64 -62
- package/third_party/boringssl/src/crypto/x509/x_all.c +103 -133
- package/third_party/boringssl/src/crypto/x509/x_attrib.c +23 -24
- package/third_party/boringssl/src/crypto/x509/x_crl.c +310 -321
- package/third_party/boringssl/src/crypto/x509/x_exten.c +6 -5
- package/third_party/boringssl/src/crypto/x509/x_info.c +31 -28
- package/third_party/boringssl/src/crypto/x509/x_name.c +361 -365
- package/third_party/boringssl/src/crypto/x509/x_pkey.c +38 -32
- package/third_party/boringssl/src/crypto/x509/x_pubkey.c +114 -117
- package/third_party/boringssl/src/crypto/x509/x_req.c +27 -29
- package/third_party/boringssl/src/crypto/x509/x_sig.c +2 -2
- package/third_party/boringssl/src/crypto/x509/x_spki.c +8 -10
- package/third_party/boringssl/src/crypto/x509/x_val.c +2 -2
- package/third_party/boringssl/src/crypto/x509/x_x509.c +212 -226
- package/third_party/boringssl/src/crypto/x509/x_x509a.c +112 -109
- package/third_party/boringssl/src/crypto/x509v3/ext_dat.h +10 -13
- package/third_party/boringssl/src/crypto/x509v3/internal.h +72 -87
- package/third_party/boringssl/src/crypto/x509v3/pcy_cache.c +184 -176
- package/third_party/boringssl/src/crypto/x509v3/pcy_data.c +58 -56
- package/third_party/boringssl/src/crypto/x509v3/pcy_lib.c +71 -70
- package/third_party/boringssl/src/crypto/x509v3/pcy_map.c +56 -58
- package/third_party/boringssl/src/crypto/x509v3/pcy_node.c +89 -91
- package/third_party/boringssl/src/crypto/x509v3/pcy_tree.c +585 -590
- package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +118 -112
- package/third_party/boringssl/src/crypto/x509v3/v3_akeya.c +3 -3
- package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +447 -451
- package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +44 -38
- package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +39 -43
- package/third_party/boringssl/src/crypto/x509v3/v3_conf.c +321 -320
- package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +352 -327
- package/third_party/boringssl/src/crypto/x509v3/v3_crld.c +437 -383
- package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +23 -16
- package/third_party/boringssl/src/crypto/x509v3/v3_extku.c +62 -53
- package/third_party/boringssl/src/crypto/x509v3/v3_genn.c +118 -115
- package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +30 -31
- package/third_party/boringssl/src/crypto/x509v3/v3_info.c +112 -98
- package/third_party/boringssl/src/crypto/x509v3/v3_int.c +40 -15
- package/third_party/boringssl/src/crypto/x509v3/v3_lib.c +248 -252
- package/third_party/boringssl/src/crypto/x509v3/v3_ncons.c +390 -386
- package/third_party/boringssl/src/crypto/x509v3/v3_ocsp.c +45 -32
- package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +206 -209
- package/third_party/boringssl/src/crypto/x509v3/v3_pcia.c +6 -8
- package/third_party/boringssl/src/crypto/x509v3/v3_pcons.c +54 -50
- package/third_party/boringssl/src/crypto/x509v3/v3_pmaps.c +66 -65
- package/third_party/boringssl/src/crypto/x509v3/v3_prn.c +144 -133
- package/third_party/boringssl/src/crypto/x509v3/v3_purp.c +695 -709
- package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +75 -69
- package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +1102 -1082
- package/third_party/boringssl/src/include/openssl/base.h +3 -1
- package/third_party/boringssl/src/include/openssl/bn.h +3 -0
- package/third_party/boringssl/src/include/openssl/bytestring.h +20 -0
- package/third_party/boringssl/src/include/openssl/evp.h +6 -5
- package/third_party/boringssl/src/include/openssl/kdf.h +91 -0
- package/third_party/boringssl/src/include/openssl/nid.h +4 -0
- package/third_party/boringssl/src/include/openssl/ssl.h +6 -1
- package/third_party/boringssl/src/include/openssl/stack.h +47 -32
- package/third_party/boringssl/src/include/openssl/trust_token.h +18 -3
- package/third_party/boringssl/src/include/openssl/x509.h +18 -0
- package/third_party/boringssl/src/ssl/ssl_file.cc +61 -99
- package/third_party/boringssl/src/ssl/ssl_test.cc +101 -0
- package/third_party/boringssl/src/util/doc.config +2 -1
- package/third_party/boringssl/src/util/fipstools/acvp/acvptool/subprocess/subprocess.go +8 -0
- package/third_party/googleurl/AUTHORS +16 -2
- package/third_party/googleurl/base/BUILD +1 -0
- package/third_party/googleurl/base/compiler_specific.h +16 -17
- package/third_party/googleurl/base/containers/contiguous_iterator.h +13 -9
- package/third_party/googleurl/base/containers/span.h +23 -8
- package/third_party/googleurl/base/memory/raw_ptr.h +17 -25
- package/third_party/googleurl/base/memory/raw_ptr_exclusion.h +21 -0
- package/third_party/googleurl/base/strings/escape.cc +14 -2
- package/third_party/googleurl/base/strings/safe_sprintf.h +1 -1
- package/third_party/googleurl/base/strings/string_number_conversions.cc +5 -3
- package/third_party/googleurl/base/strings/string_number_conversions_internal.h +5 -5
- package/third_party/googleurl/base/strings/string_piece.h +3 -3
- package/third_party/googleurl/base/strings/string_util.cc +4 -27
- package/third_party/googleurl/base/strings/string_util.h +43 -8
- package/third_party/googleurl/base/strings/string_util_internal.h +11 -12
- package/third_party/googleurl/base/strings/string_util_unittest.cc +33 -0
- package/third_party/googleurl/base/strings/string_util_win.cc +0 -5
- package/third_party/googleurl/base/strings/string_util_win.h +9 -1
- package/third_party/googleurl/base/strings/utf_offset_string_conversions.cc +1 -1
- package/third_party/googleurl/base/strings/utf_string_conversion_utils.cc +5 -8
- package/third_party/googleurl/base/strings/utf_string_conversion_utils.h +13 -10
- package/third_party/googleurl/base/strings/utf_string_conversions.cc +32 -25
- package/third_party/googleurl/base/template_util.h +23 -35
- package/third_party/googleurl/build/build_config.h +14 -3
- package/third_party/googleurl/copy.bara.sky +1 -1
- package/third_party/googleurl/url/gurl.cc +8 -4
- package/third_party/googleurl/url/gurl.h +1 -0
- package/third_party/googleurl/url/gurl_unittest.cc +1 -0
- package/third_party/googleurl/url/origin.h +36 -26
- package/third_party/googleurl/url/scheme_host_port.h +4 -1
- package/third_party/googleurl/url/url_canon.h +2 -1
- package/third_party/googleurl/url/url_canon_internal.cc +9 -7
- package/third_party/googleurl/url/url_canon_internal.h +16 -16
- package/third_party/googleurl/url/url_canon_stdstring.h +2 -1
- package/third_party/googleurl/url/url_util.cc +9 -8
- package/third_party/quiche/build/source_list.bzl +7 -0
- package/third_party/quiche/build/source_list.gni +7 -0
- package/third_party/quiche/build/source_list.json +7 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_mem_slice.h +7 -3
- package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +86 -2
- package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +104 -2
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +23 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +6 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/send_algorithm_test.cc +0 -16
- package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -1
- package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +56 -2
- package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -0
- package/third_party/quiche/quiche/quic/core/http/http_constants.h +1 -0
- package/third_party/quiche/quiche/quic/core/http/http_encoder.cc +28 -17
- package/third_party/quiche/quiche/quic/core/http/http_encoder.h +5 -0
- package/third_party/quiche/quiche/quic/core/http/http_encoder_test.cc +26 -30
- package/third_party/quiche/quiche/quic/core/http/http_frames.h +1 -0
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.cc +4 -4
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base_test.cc +1 -1
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_client_session.cc +5 -1
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +6 -33
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +0 -17
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +5 -20
- package/third_party/quiche/quiche/quic/core/io/quic_event_loop.h +81 -0
- package/third_party/quiche/quiche/quic/core/io/quic_poll_event_loop.cc +265 -0
- package/third_party/quiche/quiche/quic/core/io/quic_poll_event_loop.h +152 -0
- package/third_party/quiche/quiche/quic/core/io/quic_poll_event_loop_test.cc +341 -0
- package/third_party/quiche/quiche/quic/core/quic_buffered_packet_store.cc +3 -1
- package/third_party/quiche/quiche/quic/core/quic_buffered_packet_store.h +7 -7
- package/third_party/quiche/quiche/quic/core/quic_buffered_packet_store_test.cc +4 -3
- package/third_party/quiche/quiche/quic/core/quic_connection.cc +69 -19
- package/third_party/quiche/quiche/quic/core/quic_connection.h +9 -3
- package/third_party/quiche/quiche/quic/core/quic_connection_id_manager.cc +29 -10
- package/third_party/quiche/quiche/quic/core/quic_connection_id_manager.h +5 -3
- package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +85 -22
- package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +186 -30
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +2 -1
- package/third_party/quiche/quiche/quic/core/quic_default_clock.cc +31 -0
- package/third_party/quiche/quiche/quic/core/quic_default_clock.h +34 -0
- package/third_party/quiche/quiche/quic/core/quic_default_connection_helper.h +49 -0
- package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +53 -37
- package/third_party/quiche/quiche/quic/core/quic_dispatcher.h +19 -11
- package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +15 -2
- package/third_party/quiche/quiche/quic/core/quic_flags_list.h +10 -4
- package/third_party/quiche/quiche/quic/core/quic_idle_network_detector.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_idle_network_detector_test.cc +4 -4
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +14 -3
- package/third_party/quiche/quiche/quic/core/quic_packet_creator_test.cc +145 -2
- package/third_party/quiche/quiche/quic/core/quic_packets.cc +3 -1
- package/third_party/quiche/quiche/quic/core/quic_packets.h +4 -0
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.cc +13 -11
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager.h +9 -0
- package/third_party/quiche/quiche/quic/core/quic_sent_packet_manager_test.cc +6 -0
- package/third_party/quiche/quiche/quic/core/quic_session.cc +3 -2
- package/third_party/quiche/quiche/quic/core/quic_session.h +8 -3
- package/third_party/quiche/quiche/quic/core/quic_types.cc +18 -0
- package/third_party/quiche/quiche/quic/core/quic_types.h +3 -0
- package/third_party/quiche/quiche/quic/core/tls_chlo_extractor.cc +3 -0
- package/third_party/quiche/quiche/quic/core/tls_chlo_extractor.h +10 -0
- package/third_party/quiche/quiche/quic/test_tools/mock_quic_session_visitor.h +1 -1
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +1 -1
- package/third_party/quiche/quiche/quic/test_tools/server_thread.cc +3 -2
- package/third_party/quiche/quiche/quic/test_tools/simple_session_notifier.cc +7 -1
- package/third_party/quiche/quiche/quic/test_tools/simple_session_notifier.h +3 -0
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint.h +4 -2
- package/certs/ca.cnf +0 -69
- package/certs/generate_certs.sh +0 -53
- package/certs/generate_certs_leaf.sh +0 -53
- package/certs/leaf.cnf +0 -24
- package/certs/readme.txt +0 -2
- package/third_party/quiche/build/BUILD.bazel +0 -7
|
@@ -74,100 +74,96 @@
|
|
|
74
74
|
static CRYPTO_EX_DATA_CLASS g_ex_data_class = CRYPTO_EX_DATA_CLASS_INIT;
|
|
75
75
|
|
|
76
76
|
ASN1_SEQUENCE_enc(X509_CINF, enc, 0) = {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
77
|
+
ASN1_EXP_OPT(X509_CINF, version, ASN1_INTEGER, 0),
|
|
78
|
+
ASN1_SIMPLE(X509_CINF, serialNumber, ASN1_INTEGER),
|
|
79
|
+
ASN1_SIMPLE(X509_CINF, signature, X509_ALGOR),
|
|
80
|
+
ASN1_SIMPLE(X509_CINF, issuer, X509_NAME),
|
|
81
|
+
ASN1_SIMPLE(X509_CINF, validity, X509_VAL),
|
|
82
|
+
ASN1_SIMPLE(X509_CINF, subject, X509_NAME),
|
|
83
|
+
ASN1_SIMPLE(X509_CINF, key, X509_PUBKEY),
|
|
84
|
+
ASN1_IMP_OPT(X509_CINF, issuerUID, ASN1_BIT_STRING, 1),
|
|
85
|
+
ASN1_IMP_OPT(X509_CINF, subjectUID, ASN1_BIT_STRING, 2),
|
|
86
|
+
ASN1_EXP_SEQUENCE_OF_OPT(X509_CINF, extensions, X509_EXTENSION, 3),
|
|
87
87
|
} ASN1_SEQUENCE_END_enc(X509_CINF, X509_CINF)
|
|
88
88
|
|
|
89
89
|
IMPLEMENT_ASN1_FUNCTIONS(X509_CINF)
|
|
90
|
-
|
|
90
|
+
// X509 top level structure needs a bit of customisation
|
|
91
91
|
|
|
92
92
|
extern void policy_cache_free(X509_POLICY_CACHE *cache);
|
|
93
93
|
|
|
94
94
|
static int x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
95
|
-
void *exarg)
|
|
96
|
-
|
|
97
|
-
X509 *ret = (X509 *)*pval;
|
|
98
|
-
|
|
99
|
-
switch (operation) {
|
|
95
|
+
void *exarg) {
|
|
96
|
+
X509 *ret = (X509 *)*pval;
|
|
100
97
|
|
|
98
|
+
switch (operation) {
|
|
101
99
|
case ASN1_OP_NEW_POST:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
100
|
+
ret->ex_flags = 0;
|
|
101
|
+
ret->ex_pathlen = -1;
|
|
102
|
+
ret->skid = NULL;
|
|
103
|
+
ret->akid = NULL;
|
|
104
|
+
ret->aux = NULL;
|
|
105
|
+
ret->crldp = NULL;
|
|
106
|
+
ret->buf = NULL;
|
|
107
|
+
CRYPTO_new_ex_data(&ret->ex_data);
|
|
108
|
+
CRYPTO_MUTEX_init(&ret->lock);
|
|
109
|
+
break;
|
|
112
110
|
|
|
113
111
|
case ASN1_OP_D2I_PRE:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
CRYPTO_BUFFER_free(ret->buf);
|
|
113
|
+
ret->buf = NULL;
|
|
114
|
+
break;
|
|
117
115
|
|
|
118
116
|
case ASN1_OP_D2I_POST: {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
117
|
+
// The version must be one of v1(0), v2(1), or v3(2).
|
|
118
|
+
long version = X509_VERSION_1;
|
|
119
|
+
if (ret->cert_info->version != NULL) {
|
|
120
|
+
version = ASN1_INTEGER_get(ret->cert_info->version);
|
|
121
|
+
// TODO(https://crbug.com/boringssl/364): |X509_VERSION_1| should
|
|
122
|
+
// also be rejected here. This means an explicitly-encoded X.509v1
|
|
123
|
+
// version. v1 is DEFAULT, so DER requires it be omitted.
|
|
124
|
+
if (version < X509_VERSION_1 || version > X509_VERSION_3) {
|
|
125
|
+
OPENSSL_PUT_ERROR(X509, X509_R_INVALID_VERSION);
|
|
126
|
+
return 0;
|
|
130
127
|
}
|
|
128
|
+
}
|
|
131
129
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
130
|
+
// Per RFC 5280, section 4.1.2.8, these fields require v2 or v3.
|
|
131
|
+
if (version == X509_VERSION_1 && (ret->cert_info->issuerUID != NULL ||
|
|
132
|
+
ret->cert_info->subjectUID != NULL)) {
|
|
133
|
+
OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_FOR_VERSION);
|
|
134
|
+
return 0;
|
|
135
|
+
}
|
|
138
136
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
// Per RFC 5280, section 4.1.2.9, extensions require v3.
|
|
138
|
+
if (version != X509_VERSION_3 && ret->cert_info->extensions != NULL) {
|
|
139
|
+
OPENSSL_PUT_ERROR(X509, X509_R_INVALID_FIELD_FOR_VERSION);
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
144
142
|
|
|
145
|
-
|
|
143
|
+
break;
|
|
146
144
|
}
|
|
147
145
|
|
|
148
146
|
case ASN1_OP_FREE_POST:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return 1;
|
|
147
|
+
CRYPTO_MUTEX_cleanup(&ret->lock);
|
|
148
|
+
CRYPTO_free_ex_data(&g_ex_data_class, ret, &ret->ex_data);
|
|
149
|
+
X509_CERT_AUX_free(ret->aux);
|
|
150
|
+
ASN1_OCTET_STRING_free(ret->skid);
|
|
151
|
+
AUTHORITY_KEYID_free(ret->akid);
|
|
152
|
+
CRL_DIST_POINTS_free(ret->crldp);
|
|
153
|
+
policy_cache_free(ret->policy_cache);
|
|
154
|
+
GENERAL_NAMES_free(ret->altname);
|
|
155
|
+
NAME_CONSTRAINTS_free(ret->nc);
|
|
156
|
+
CRYPTO_BUFFER_free(ret->buf);
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
164
159
|
|
|
160
|
+
return 1;
|
|
165
161
|
}
|
|
166
162
|
|
|
167
163
|
ASN1_SEQUENCE_ref(X509, x509_cb) = {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
164
|
+
ASN1_SIMPLE(X509, cert_info, X509_CINF),
|
|
165
|
+
ASN1_SIMPLE(X509, sig_alg, X509_ALGOR),
|
|
166
|
+
ASN1_SIMPLE(X509, signature, ASN1_BIT_STRING),
|
|
171
167
|
} ASN1_SEQUENCE_END_ref(X509, X509)
|
|
172
168
|
|
|
173
169
|
IMPLEMENT_ASN1_FUNCTIONS(X509)
|
|
@@ -204,191 +200,181 @@ X509 *X509_parse_from_buffer(CRYPTO_BUFFER *buf) {
|
|
|
204
200
|
return ret;
|
|
205
201
|
}
|
|
206
202
|
|
|
207
|
-
int X509_up_ref(X509 *x)
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
return 1;
|
|
203
|
+
int X509_up_ref(X509 *x) {
|
|
204
|
+
CRYPTO_refcount_inc(&x->references);
|
|
205
|
+
return 1;
|
|
211
206
|
}
|
|
212
207
|
|
|
213
|
-
int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *
|
|
214
|
-
CRYPTO_EX_dup *dup_unused,
|
|
215
|
-
{
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
208
|
+
int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
|
|
209
|
+
CRYPTO_EX_dup *dup_unused,
|
|
210
|
+
CRYPTO_EX_free *free_func) {
|
|
211
|
+
int index;
|
|
212
|
+
if (!CRYPTO_get_ex_new_index(&g_ex_data_class, &index, argl, argp,
|
|
213
|
+
free_func)) {
|
|
214
|
+
return -1;
|
|
215
|
+
}
|
|
216
|
+
return index;
|
|
222
217
|
}
|
|
223
218
|
|
|
224
|
-
int X509_set_ex_data(X509 *r, int idx, void *arg)
|
|
225
|
-
|
|
226
|
-
return (CRYPTO_set_ex_data(&r->ex_data, idx, arg));
|
|
219
|
+
int X509_set_ex_data(X509 *r, int idx, void *arg) {
|
|
220
|
+
return (CRYPTO_set_ex_data(&r->ex_data, idx, arg));
|
|
227
221
|
}
|
|
228
222
|
|
|
229
|
-
void *X509_get_ex_data(X509 *r, int idx)
|
|
230
|
-
|
|
231
|
-
return (CRYPTO_get_ex_data(&r->ex_data, idx));
|
|
223
|
+
void *X509_get_ex_data(X509 *r, int idx) {
|
|
224
|
+
return (CRYPTO_get_ex_data(&r->ex_data, idx));
|
|
232
225
|
}
|
|
233
226
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
X509 *
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
/* If certificate unreadable then forget it */
|
|
251
|
-
if (!ret)
|
|
252
|
-
return NULL;
|
|
253
|
-
/* update length */
|
|
254
|
-
length -= q - *pp;
|
|
255
|
-
/* Parse auxiliary information if there is any. */
|
|
256
|
-
if (length > 0 && !d2i_X509_CERT_AUX(&ret->aux, &q, length))
|
|
257
|
-
goto err;
|
|
258
|
-
*pp = q;
|
|
259
|
-
return ret;
|
|
260
|
-
err:
|
|
261
|
-
if (freeret) {
|
|
262
|
-
X509_free(ret);
|
|
263
|
-
if (a)
|
|
264
|
-
*a = NULL;
|
|
265
|
-
}
|
|
227
|
+
// X509_AUX ASN1 routines. X509_AUX is the name given to a certificate with
|
|
228
|
+
// extra info tagged on the end. Since these functions set how a certificate
|
|
229
|
+
// is trusted they should only be used when the certificate comes from a
|
|
230
|
+
// reliable source such as local storage.
|
|
231
|
+
|
|
232
|
+
X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length) {
|
|
233
|
+
const unsigned char *q = *pp;
|
|
234
|
+
X509 *ret;
|
|
235
|
+
int freeret = 0;
|
|
236
|
+
|
|
237
|
+
if (!a || *a == NULL) {
|
|
238
|
+
freeret = 1;
|
|
239
|
+
}
|
|
240
|
+
ret = d2i_X509(a, &q, length);
|
|
241
|
+
// If certificate unreadable then forget it
|
|
242
|
+
if (!ret) {
|
|
266
243
|
return NULL;
|
|
244
|
+
}
|
|
245
|
+
// update length
|
|
246
|
+
length -= q - *pp;
|
|
247
|
+
// Parse auxiliary information if there is any.
|
|
248
|
+
if (length > 0 && !d2i_X509_CERT_AUX(&ret->aux, &q, length)) {
|
|
249
|
+
goto err;
|
|
250
|
+
}
|
|
251
|
+
*pp = q;
|
|
252
|
+
return ret;
|
|
253
|
+
err:
|
|
254
|
+
if (freeret) {
|
|
255
|
+
X509_free(ret);
|
|
256
|
+
if (a) {
|
|
257
|
+
*a = NULL;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return NULL;
|
|
267
261
|
}
|
|
268
262
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
*/
|
|
287
|
-
length = i2d_X509(a, pp);
|
|
288
|
-
if (length <= 0 || a == NULL) {
|
|
289
|
-
return length;
|
|
290
|
-
}
|
|
263
|
+
// Serialize trusted certificate to *pp or just return the required buffer
|
|
264
|
+
// length if pp == NULL. We ultimately want to avoid modifying *pp in the
|
|
265
|
+
// error path, but that depends on similar hygiene in lower-level functions.
|
|
266
|
+
// Here we avoid compounding the problem.
|
|
267
|
+
static int i2d_x509_aux_internal(X509 *a, unsigned char **pp) {
|
|
268
|
+
int length, tmplen;
|
|
269
|
+
unsigned char *start = pp != NULL ? *pp : NULL;
|
|
270
|
+
|
|
271
|
+
assert(pp == NULL || *pp != NULL);
|
|
272
|
+
|
|
273
|
+
// This might perturb *pp on error, but fixing that belongs in i2d_X509()
|
|
274
|
+
// not here. It should be that if a == NULL length is zero, but we check
|
|
275
|
+
// both just in case.
|
|
276
|
+
length = i2d_X509(a, pp);
|
|
277
|
+
if (length <= 0 || a == NULL) {
|
|
278
|
+
return length;
|
|
279
|
+
}
|
|
291
280
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
length += tmplen;
|
|
281
|
+
if (a->aux != NULL) {
|
|
282
|
+
tmplen = i2d_X509_CERT_AUX(a->aux, pp);
|
|
283
|
+
if (tmplen < 0) {
|
|
284
|
+
if (start != NULL) {
|
|
285
|
+
*pp = start;
|
|
286
|
+
}
|
|
287
|
+
return tmplen;
|
|
300
288
|
}
|
|
289
|
+
length += tmplen;
|
|
290
|
+
}
|
|
301
291
|
|
|
302
|
-
|
|
292
|
+
return length;
|
|
303
293
|
}
|
|
304
294
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
*
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
*
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
/* Obtain the combined length */
|
|
324
|
-
if ((length = i2d_x509_aux_internal(a, NULL)) <= 0)
|
|
325
|
-
return length;
|
|
326
|
-
|
|
327
|
-
/* Allocate requisite combined storage */
|
|
328
|
-
*pp = tmp = OPENSSL_malloc(length);
|
|
329
|
-
if (tmp == NULL)
|
|
330
|
-
return -1; /* Push error onto error stack? */
|
|
331
|
-
|
|
332
|
-
/* Encode, but keep *pp at the originally malloced pointer */
|
|
333
|
-
length = i2d_x509_aux_internal(a, &tmp);
|
|
334
|
-
if (length <= 0) {
|
|
335
|
-
OPENSSL_free(*pp);
|
|
336
|
-
*pp = NULL;
|
|
337
|
-
}
|
|
295
|
+
// Serialize trusted certificate to *pp, or just return the required buffer
|
|
296
|
+
// length if pp == NULL.
|
|
297
|
+
//
|
|
298
|
+
// When pp is not NULL, but *pp == NULL, we allocate the buffer, but since
|
|
299
|
+
// we're writing two ASN.1 objects back to back, we can't have i2d_X509() do
|
|
300
|
+
// the allocation, nor can we allow i2d_X509_CERT_AUX() to increment the
|
|
301
|
+
// allocated buffer.
|
|
302
|
+
int i2d_X509_AUX(X509 *a, unsigned char **pp) {
|
|
303
|
+
int length;
|
|
304
|
+
unsigned char *tmp;
|
|
305
|
+
|
|
306
|
+
// Buffer provided by caller
|
|
307
|
+
if (pp == NULL || *pp != NULL) {
|
|
308
|
+
return i2d_x509_aux_internal(a, pp);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Obtain the combined length
|
|
312
|
+
if ((length = i2d_x509_aux_internal(a, NULL)) <= 0) {
|
|
338
313
|
return length;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Allocate requisite combined storage
|
|
317
|
+
*pp = tmp = OPENSSL_malloc(length);
|
|
318
|
+
if (tmp == NULL) {
|
|
319
|
+
return -1; // Push error onto error stack?
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// Encode, but keep *pp at the originally malloced pointer
|
|
323
|
+
length = i2d_x509_aux_internal(a, &tmp);
|
|
324
|
+
if (length <= 0) {
|
|
325
|
+
OPENSSL_free(*pp);
|
|
326
|
+
*pp = NULL;
|
|
327
|
+
}
|
|
328
|
+
return length;
|
|
339
329
|
}
|
|
340
330
|
|
|
341
|
-
int i2d_re_X509_tbs(X509 *x509, unsigned char **outp)
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
return i2d_X509_CINF(x509->cert_info, outp);
|
|
331
|
+
int i2d_re_X509_tbs(X509 *x509, unsigned char **outp) {
|
|
332
|
+
x509->cert_info->enc.modified = 1;
|
|
333
|
+
return i2d_X509_CINF(x509->cert_info, outp);
|
|
345
334
|
}
|
|
346
335
|
|
|
347
|
-
int i2d_X509_tbs(X509 *x509, unsigned char **outp)
|
|
348
|
-
|
|
349
|
-
return i2d_X509_CINF(x509->cert_info, outp);
|
|
336
|
+
int i2d_X509_tbs(X509 *x509, unsigned char **outp) {
|
|
337
|
+
return i2d_X509_CINF(x509->cert_info, outp);
|
|
350
338
|
}
|
|
351
339
|
|
|
352
|
-
int X509_set1_signature_algo(X509 *x509, const X509_ALGOR *algo)
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
}
|
|
340
|
+
int X509_set1_signature_algo(X509 *x509, const X509_ALGOR *algo) {
|
|
341
|
+
// TODO(https://crbug.com/boringssl/407): Generated ASN.1 dup functions
|
|
342
|
+
// should be const. Alternatively, when we can embed required fields
|
|
343
|
+
// directly in structs, import |X509_ALGOR_copy| from upstream.
|
|
344
|
+
X509_ALGOR *copy1 = X509_ALGOR_dup((X509_ALGOR *)algo);
|
|
345
|
+
X509_ALGOR *copy2 = X509_ALGOR_dup((X509_ALGOR *)algo);
|
|
346
|
+
if (copy1 == NULL || copy2 == NULL) {
|
|
347
|
+
X509_ALGOR_free(copy1);
|
|
348
|
+
X509_ALGOR_free(copy2);
|
|
349
|
+
return 0;
|
|
350
|
+
}
|
|
364
351
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
352
|
+
X509_ALGOR_free(x509->sig_alg);
|
|
353
|
+
x509->sig_alg = copy1;
|
|
354
|
+
X509_ALGOR_free(x509->cert_info->signature);
|
|
355
|
+
x509->cert_info->signature = copy2;
|
|
356
|
+
return 1;
|
|
370
357
|
}
|
|
371
358
|
|
|
372
|
-
int X509_set1_signature_value(X509 *x509, const uint8_t *sig, size_t sig_len)
|
|
373
|
-
{
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
return 1;
|
|
359
|
+
int X509_set1_signature_value(X509 *x509, const uint8_t *sig, size_t sig_len) {
|
|
360
|
+
if (!ASN1_STRING_set(x509->signature, sig, sig_len)) {
|
|
361
|
+
return 0;
|
|
362
|
+
}
|
|
363
|
+
x509->signature->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
|
|
364
|
+
x509->signature->flags |= ASN1_STRING_FLAG_BITS_LEFT;
|
|
365
|
+
return 1;
|
|
380
366
|
}
|
|
381
367
|
|
|
382
368
|
void X509_get0_signature(const ASN1_BIT_STRING **psig, const X509_ALGOR **palg,
|
|
383
|
-
const X509 *x)
|
|
384
|
-
{
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
369
|
+
const X509 *x) {
|
|
370
|
+
if (psig) {
|
|
371
|
+
*psig = x->signature;
|
|
372
|
+
}
|
|
373
|
+
if (palg) {
|
|
374
|
+
*palg = x->sig_alg;
|
|
375
|
+
}
|
|
389
376
|
}
|
|
390
377
|
|
|
391
|
-
int X509_get_signature_nid(const X509 *x)
|
|
392
|
-
|
|
393
|
-
return OBJ_obj2nid(x->sig_alg->algorithm);
|
|
378
|
+
int X509_get_signature_nid(const X509 *x) {
|
|
379
|
+
return OBJ_obj2nid(x->sig_alg->algorithm);
|
|
394
380
|
}
|