@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
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
#include <openssl/mem.h>
|
|
64
64
|
#include <openssl/obj.h>
|
|
65
65
|
|
|
66
|
-
#include "internal.h"
|
|
67
66
|
#include "../internal.h"
|
|
67
|
+
#include "internal.h"
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
@@ -75,258 +75,266 @@ static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
|
|
|
75
75
|
static int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
|
76
76
|
static void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
|
77
77
|
|
|
78
|
-
ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
78
|
+
ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it) {
|
|
79
|
+
ASN1_VALUE *ret = NULL;
|
|
80
|
+
if (ASN1_item_ex_new(&ret, it) > 0) {
|
|
81
|
+
return ret;
|
|
82
|
+
}
|
|
83
|
+
return NULL;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
// Allocate an ASN1 structure
|
|
87
87
|
|
|
88
|
-
int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
|
|
89
|
-
|
|
90
|
-
return asn1_item_ex_combine_new(pval, it, 0);
|
|
88
|
+
int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
|
89
|
+
return asn1_item_ex_combine_new(pval, it, 0);
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
94
|
-
int combine)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
int i;
|
|
100
|
-
|
|
101
|
-
switch (it->itype) {
|
|
93
|
+
int combine) {
|
|
94
|
+
const ASN1_TEMPLATE *tt = NULL;
|
|
95
|
+
const ASN1_EXTERN_FUNCS *ef;
|
|
96
|
+
ASN1_VALUE **pseqval;
|
|
97
|
+
int i;
|
|
102
98
|
|
|
99
|
+
switch (it->itype) {
|
|
103
100
|
case ASN1_ITYPE_EXTERN:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
101
|
+
ef = it->funcs;
|
|
102
|
+
if (ef && ef->asn1_ex_new) {
|
|
103
|
+
if (!ef->asn1_ex_new(pval, it)) {
|
|
104
|
+
goto memerr;
|
|
108
105
|
}
|
|
109
|
-
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
110
108
|
|
|
111
109
|
case ASN1_ITYPE_PRIMITIVE:
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
if (it->templates) {
|
|
111
|
+
if (!ASN1_template_new(pval, it->templates)) {
|
|
112
|
+
goto memerr;
|
|
113
|
+
}
|
|
114
|
+
} else if (!ASN1_primitive_new(pval, it)) {
|
|
115
|
+
goto memerr;
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
118
|
|
|
119
119
|
case ASN1_ITYPE_MSTRING:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
if (!ASN1_primitive_new(pval, it)) {
|
|
121
|
+
goto memerr;
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
123
124
|
|
|
124
125
|
case ASN1_ITYPE_CHOICE: {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (i == 2) {
|
|
132
|
-
return 1;
|
|
133
|
-
}
|
|
126
|
+
const ASN1_AUX *aux = it->funcs;
|
|
127
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
|
128
|
+
if (asn1_cb) {
|
|
129
|
+
i = asn1_cb(ASN1_OP_NEW_PRE, pval, it, NULL);
|
|
130
|
+
if (!i) {
|
|
131
|
+
goto auxerr;
|
|
134
132
|
}
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
if (!*pval)
|
|
138
|
-
goto memerr;
|
|
139
|
-
OPENSSL_memset(*pval, 0, it->size);
|
|
133
|
+
if (i == 2) {
|
|
134
|
+
return 1;
|
|
140
135
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
136
|
+
}
|
|
137
|
+
if (!combine) {
|
|
138
|
+
*pval = OPENSSL_malloc(it->size);
|
|
139
|
+
if (!*pval) {
|
|
140
|
+
goto memerr;
|
|
141
|
+
}
|
|
142
|
+
OPENSSL_memset(*pval, 0, it->size);
|
|
143
|
+
}
|
|
144
|
+
asn1_set_choice_selector(pval, -1, it);
|
|
145
|
+
if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL)) {
|
|
146
|
+
goto auxerr2;
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
145
149
|
}
|
|
146
150
|
|
|
147
151
|
case ASN1_ITYPE_SEQUENCE: {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (i == 2) {
|
|
155
|
-
return 1;
|
|
156
|
-
}
|
|
152
|
+
const ASN1_AUX *aux = it->funcs;
|
|
153
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
|
154
|
+
if (asn1_cb) {
|
|
155
|
+
i = asn1_cb(ASN1_OP_NEW_PRE, pval, it, NULL);
|
|
156
|
+
if (!i) {
|
|
157
|
+
goto auxerr;
|
|
157
158
|
}
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
if (!*pval)
|
|
161
|
-
goto memerr;
|
|
162
|
-
OPENSSL_memset(*pval, 0, it->size);
|
|
163
|
-
asn1_refcount_set_one(pval, it);
|
|
164
|
-
asn1_enc_init(pval, it);
|
|
159
|
+
if (i == 2) {
|
|
160
|
+
return 1;
|
|
165
161
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
}
|
|
163
|
+
if (!combine) {
|
|
164
|
+
*pval = OPENSSL_malloc(it->size);
|
|
165
|
+
if (!*pval) {
|
|
166
|
+
goto memerr;
|
|
170
167
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
168
|
+
OPENSSL_memset(*pval, 0, it->size);
|
|
169
|
+
asn1_refcount_set_one(pval, it);
|
|
170
|
+
asn1_enc_init(pval, it);
|
|
171
|
+
}
|
|
172
|
+
for (i = 0, tt = it->templates; i < it->tcount; tt++, i++) {
|
|
173
|
+
pseqval = asn1_get_field_ptr(pval, tt);
|
|
174
|
+
if (!ASN1_template_new(pseqval, tt)) {
|
|
175
|
+
goto memerr2;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL)) {
|
|
179
|
+
goto auxerr2;
|
|
180
|
+
}
|
|
181
|
+
break;
|
|
175
182
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
}
|
|
184
|
+
return 1;
|
|
185
|
+
|
|
186
|
+
memerr2:
|
|
187
|
+
asn1_item_combine_free(pval, it, combine);
|
|
188
|
+
memerr:
|
|
189
|
+
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
|
190
|
+
return 0;
|
|
191
|
+
|
|
192
|
+
auxerr2:
|
|
193
|
+
asn1_item_combine_free(pval, it, combine);
|
|
194
|
+
auxerr:
|
|
195
|
+
OPENSSL_PUT_ERROR(ASN1, ASN1_R_AUX_ERROR);
|
|
196
|
+
return 0;
|
|
190
197
|
}
|
|
191
198
|
|
|
192
|
-
static void asn1_item_clear(ASN1_VALUE **pval, const ASN1_ITEM *it)
|
|
193
|
-
|
|
194
|
-
const ASN1_EXTERN_FUNCS *ef;
|
|
195
|
-
|
|
196
|
-
switch (it->itype) {
|
|
199
|
+
static void asn1_item_clear(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
|
200
|
+
const ASN1_EXTERN_FUNCS *ef;
|
|
197
201
|
|
|
202
|
+
switch (it->itype) {
|
|
198
203
|
case ASN1_ITYPE_EXTERN:
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
204
|
+
ef = it->funcs;
|
|
205
|
+
if (ef && ef->asn1_ex_clear) {
|
|
206
|
+
ef->asn1_ex_clear(pval, it);
|
|
207
|
+
} else {
|
|
208
|
+
*pval = NULL;
|
|
209
|
+
}
|
|
210
|
+
break;
|
|
205
211
|
|
|
206
212
|
case ASN1_ITYPE_PRIMITIVE:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
213
|
+
if (it->templates) {
|
|
214
|
+
asn1_template_clear(pval, it->templates);
|
|
215
|
+
} else {
|
|
216
|
+
asn1_primitive_clear(pval, it);
|
|
217
|
+
}
|
|
218
|
+
break;
|
|
212
219
|
|
|
213
220
|
case ASN1_ITYPE_MSTRING:
|
|
214
|
-
|
|
215
|
-
|
|
221
|
+
asn1_primitive_clear(pval, it);
|
|
222
|
+
break;
|
|
216
223
|
|
|
217
224
|
case ASN1_ITYPE_CHOICE:
|
|
218
225
|
case ASN1_ITYPE_SEQUENCE:
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
226
|
+
*pval = NULL;
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
222
229
|
}
|
|
223
230
|
|
|
224
|
-
static int ASN1_template_new(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt)
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
/* If ANY DEFINED BY nothing to do */
|
|
231
|
+
static int ASN1_template_new(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt) {
|
|
232
|
+
const ASN1_ITEM *it = ASN1_ITEM_ptr(tt->item);
|
|
233
|
+
int ret;
|
|
234
|
+
if (tt->flags & ASN1_TFLG_OPTIONAL) {
|
|
235
|
+
asn1_template_clear(pval, tt);
|
|
236
|
+
return 1;
|
|
237
|
+
}
|
|
238
|
+
// If ANY DEFINED BY nothing to do
|
|
233
239
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
*pval = (ASN1_VALUE *)skval;
|
|
248
|
-
ret = 1;
|
|
249
|
-
goto done;
|
|
240
|
+
if (tt->flags & ASN1_TFLG_ADB_MASK) {
|
|
241
|
+
*pval = NULL;
|
|
242
|
+
return 1;
|
|
243
|
+
}
|
|
244
|
+
// If SET OF or SEQUENCE OF, its a STACK
|
|
245
|
+
if (tt->flags & ASN1_TFLG_SK_MASK) {
|
|
246
|
+
STACK_OF(ASN1_VALUE) *skval;
|
|
247
|
+
skval = sk_ASN1_VALUE_new_null();
|
|
248
|
+
if (!skval) {
|
|
249
|
+
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
|
250
|
+
ret = 0;
|
|
251
|
+
goto done;
|
|
250
252
|
}
|
|
251
|
-
|
|
252
|
-
ret =
|
|
253
|
-
done
|
|
254
|
-
|
|
253
|
+
*pval = (ASN1_VALUE *)skval;
|
|
254
|
+
ret = 1;
|
|
255
|
+
goto done;
|
|
256
|
+
}
|
|
257
|
+
// Otherwise pass it back to the item routine
|
|
258
|
+
ret = asn1_item_ex_combine_new(pval, it, tt->flags & ASN1_TFLG_COMBINE);
|
|
259
|
+
done:
|
|
260
|
+
return ret;
|
|
255
261
|
}
|
|
256
262
|
|
|
257
|
-
static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt)
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
263
|
+
static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt) {
|
|
264
|
+
// If ADB or STACK just NULL the field
|
|
265
|
+
if (tt->flags & (ASN1_TFLG_ADB_MASK | ASN1_TFLG_SK_MASK)) {
|
|
266
|
+
*pval = NULL;
|
|
267
|
+
} else {
|
|
268
|
+
asn1_item_clear(pval, ASN1_ITEM_ptr(tt->item));
|
|
269
|
+
}
|
|
264
270
|
}
|
|
265
271
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
* all the old functions.
|
|
269
|
-
*/
|
|
272
|
+
// NB: could probably combine most of the real XXX_new() behaviour and junk
|
|
273
|
+
// all the old functions.
|
|
270
274
|
|
|
271
|
-
static int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
int utype;
|
|
275
|
+
static int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
|
276
|
+
ASN1_TYPE *typ;
|
|
277
|
+
int utype;
|
|
275
278
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
279
|
+
if (!it) {
|
|
280
|
+
return 0;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Historically, |it->funcs| for primitive types contained an
|
|
284
|
+
// |ASN1_PRIMITIVE_FUNCS| table of calbacks.
|
|
285
|
+
assert(it->funcs == NULL);
|
|
286
|
+
|
|
287
|
+
if (it->itype == ASN1_ITYPE_MSTRING) {
|
|
288
|
+
utype = -1;
|
|
289
|
+
} else {
|
|
290
|
+
utype = it->utype;
|
|
291
|
+
}
|
|
292
|
+
switch (utype) {
|
|
288
293
|
case V_ASN1_OBJECT:
|
|
289
|
-
|
|
290
|
-
|
|
294
|
+
*pval = (ASN1_VALUE *)OBJ_nid2obj(NID_undef);
|
|
295
|
+
return 1;
|
|
291
296
|
|
|
292
297
|
case V_ASN1_BOOLEAN:
|
|
293
|
-
|
|
294
|
-
|
|
298
|
+
*(ASN1_BOOLEAN *)pval = it->size;
|
|
299
|
+
return 1;
|
|
295
300
|
|
|
296
301
|
case V_ASN1_NULL:
|
|
297
|
-
|
|
298
|
-
|
|
302
|
+
*pval = (ASN1_VALUE *)1;
|
|
303
|
+
return 1;
|
|
299
304
|
|
|
300
305
|
case V_ASN1_ANY:
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
306
|
+
typ = OPENSSL_malloc(sizeof(ASN1_TYPE));
|
|
307
|
+
if (!typ) {
|
|
308
|
+
return 0;
|
|
309
|
+
}
|
|
310
|
+
typ->value.ptr = NULL;
|
|
311
|
+
typ->type = -1;
|
|
312
|
+
*pval = (ASN1_VALUE *)typ;
|
|
313
|
+
break;
|
|
308
314
|
|
|
309
315
|
default:
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
+
*pval = (ASN1_VALUE *)ASN1_STRING_type_new(utype);
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
if (*pval) {
|
|
320
|
+
return 1;
|
|
321
|
+
}
|
|
322
|
+
return 0;
|
|
316
323
|
}
|
|
317
324
|
|
|
318
|
-
static void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it)
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
325
|
+
static void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
|
326
|
+
int utype;
|
|
327
|
+
// Historically, |it->funcs| for primitive types contained an
|
|
328
|
+
// |ASN1_PRIMITIVE_FUNCS| table of calbacks.
|
|
329
|
+
assert(it == NULL || it->funcs == NULL);
|
|
330
|
+
if (!it || (it->itype == ASN1_ITYPE_MSTRING)) {
|
|
331
|
+
utype = -1;
|
|
332
|
+
} else {
|
|
333
|
+
utype = it->utype;
|
|
334
|
+
}
|
|
335
|
+
if (utype == V_ASN1_BOOLEAN) {
|
|
336
|
+
*(ASN1_BOOLEAN *)pval = it->size;
|
|
337
|
+
} else {
|
|
338
|
+
*pval = NULL;
|
|
339
|
+
}
|
|
332
340
|
}
|
|
@@ -58,19 +58,13 @@
|
|
|
58
58
|
|
|
59
59
|
#include <openssl/asn1t.h>
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
#define IMPLEMENT_ASN1_STRING_FUNCTIONS(sname)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return ASN1_STRING_type_new(V_##sname); \
|
|
69
|
-
} \
|
|
70
|
-
void sname##_free(sname *x) \
|
|
71
|
-
{ \
|
|
72
|
-
ASN1_STRING_free(x); \
|
|
73
|
-
}
|
|
61
|
+
// Declarations for string types
|
|
62
|
+
|
|
63
|
+
#define IMPLEMENT_ASN1_STRING_FUNCTIONS(sname) \
|
|
64
|
+
IMPLEMENT_ASN1_TYPE(sname) \
|
|
65
|
+
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(sname, sname, sname) \
|
|
66
|
+
sname *sname##_new(void) { return ASN1_STRING_type_new(V_##sname); } \
|
|
67
|
+
void sname##_free(sname *x) { ASN1_STRING_free(x); }
|
|
74
68
|
|
|
75
69
|
IMPLEMENT_ASN1_STRING_FUNCTIONS(ASN1_OCTET_STRING)
|
|
76
70
|
IMPLEMENT_ASN1_STRING_FUNCTIONS(ASN1_INTEGER)
|
|
@@ -94,12 +88,12 @@ IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
|
|
|
94
88
|
|
|
95
89
|
IMPLEMENT_ASN1_TYPE(ASN1_ANY)
|
|
96
90
|
|
|
97
|
-
|
|
91
|
+
// Just swallow an ASN1_SEQUENCE in an ASN1_STRING
|
|
98
92
|
IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE)
|
|
99
93
|
|
|
100
94
|
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
|
|
101
95
|
|
|
102
|
-
|
|
96
|
+
// Multistring types
|
|
103
97
|
|
|
104
98
|
IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE)
|
|
105
99
|
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_STRING, ASN1_PRINTABLE,
|
|
@@ -112,20 +106,23 @@ IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING)
|
|
|
112
106
|
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_STRING, DIRECTORYSTRING,
|
|
113
107
|
DIRECTORYSTRING)
|
|
114
108
|
|
|
115
|
-
|
|
109
|
+
// Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE
|
|
116
110
|
IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1)
|
|
117
111
|
IMPLEMENT_ASN1_TYPE_ex(ASN1_TBOOLEAN, ASN1_BOOLEAN, 1)
|
|
118
112
|
IMPLEMENT_ASN1_TYPE_ex(ASN1_FBOOLEAN, ASN1_BOOLEAN, 0)
|
|
119
113
|
|
|
120
|
-
|
|
114
|
+
// Special, OCTET STRING with indefinite length constructed support
|
|
121
115
|
|
|
122
116
|
ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) =
|
|
123
|
-
|
|
117
|
+
ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY)
|
|
124
118
|
ASN1_ITEM_TEMPLATE_END(ASN1_SEQUENCE_ANY)
|
|
125
119
|
|
|
126
|
-
ASN1_ITEM_TEMPLATE(ASN1_SET_ANY) =
|
|
127
|
-
|
|
120
|
+
ASN1_ITEM_TEMPLATE(ASN1_SET_ANY) = ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SET_OF, 0,
|
|
121
|
+
ASN1_SET_ANY, ASN1_ANY)
|
|
128
122
|
ASN1_ITEM_TEMPLATE_END(ASN1_SET_ANY)
|
|
129
123
|
|
|
130
|
-
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY,
|
|
131
|
-
|
|
124
|
+
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY,
|
|
125
|
+
ASN1_SEQUENCE_ANY,
|
|
126
|
+
ASN1_SEQUENCE_ANY)
|
|
127
|
+
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY, ASN1_SET_ANY,
|
|
128
|
+
ASN1_SET_ANY)
|
|
@@ -60,27 +60,27 @@
|
|
|
60
60
|
#include <string.h>
|
|
61
61
|
|
|
62
62
|
#include <openssl/asn1t.h>
|
|
63
|
+
#include <openssl/err.h>
|
|
63
64
|
#include <openssl/mem.h>
|
|
64
65
|
#include <openssl/obj.h>
|
|
65
|
-
#include <openssl/err.h>
|
|
66
66
|
#include <openssl/thread.h>
|
|
67
67
|
|
|
68
68
|
#include "../internal.h"
|
|
69
69
|
#include "internal.h"
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
// Utility functions for manipulating fields and offsets
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
// Add 'offset' to 'addr'
|
|
75
75
|
#define offset2ptr(addr, offset) (void *)(((char *)(addr)) + (offset))
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
// Given an ASN1_ITEM CHOICE type return the selector value
|
|
78
78
|
int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
|
79
79
|
int *sel = offset2ptr(*pval, it->utype);
|
|
80
80
|
return *sel;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
// Given an ASN1_ITEM CHOICE type set the selector value, return old value.
|
|
84
84
|
int asn1_set_choice_selector(ASN1_VALUE **pval, int value,
|
|
85
85
|
const ASN1_ITEM *it) {
|
|
86
86
|
int *sel, ret;
|
|
@@ -173,7 +173,7 @@ int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
|
|
|
173
173
|
enc->alias_only_on_next_parse = 0;
|
|
174
174
|
|
|
175
175
|
if (enc->alias_only) {
|
|
176
|
-
enc->enc = (uint8_t *)
|
|
176
|
+
enc->enc = (uint8_t *)in;
|
|
177
177
|
} else {
|
|
178
178
|
enc->enc = OPENSSL_malloc(inlen);
|
|
179
179
|
if (!enc->enc) {
|
|
@@ -205,20 +205,20 @@ int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval,
|
|
|
205
205
|
return 1;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
// Given an ASN1_TEMPLATE get a pointer to a field
|
|
209
209
|
ASN1_VALUE **asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt) {
|
|
210
210
|
ASN1_VALUE **pvaltmp;
|
|
211
211
|
if (tt->flags & ASN1_TFLG_COMBINE) {
|
|
212
212
|
return pval;
|
|
213
213
|
}
|
|
214
214
|
pvaltmp = offset2ptr(*pval, tt->offset);
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
// NOTE for BOOLEAN types the field is just a plain int so we can't return
|
|
216
|
+
// int **, so settle for (int *).
|
|
217
217
|
return pvaltmp;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
|
|
221
|
-
|
|
220
|
+
// Handle ANY DEFINED BY template, find the selector, look up the relevant
|
|
221
|
+
// ASN1_TEMPLATE in the table and return it.
|
|
222
222
|
const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
|
|
223
223
|
int nullerr) {
|
|
224
224
|
const ASN1_ADB *adb;
|
|
@@ -229,13 +229,13 @@ const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
|
|
|
229
229
|
return tt;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
|
|
232
|
+
// Else ANY DEFINED BY ... get the table
|
|
233
233
|
adb = ASN1_ADB_ptr(tt->item);
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
// Get the selector field
|
|
236
236
|
sfld = offset2ptr(*pval, adb->offset);
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
// Check if NULL
|
|
239
239
|
if (*sfld == NULL) {
|
|
240
240
|
if (!adb->null_tt) {
|
|
241
241
|
goto err;
|
|
@@ -243,16 +243,16 @@ const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
|
|
|
243
243
|
return adb->null_tt;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
// Convert type to a NID:
|
|
247
|
+
// NB: don't check for NID_undef here because it
|
|
248
|
+
// might be a legitimate value in the table
|
|
249
249
|
assert(tt->flags & ASN1_TFLG_ADB_OID);
|
|
250
250
|
int selector = OBJ_obj2nid((ASN1_OBJECT *)*sfld);
|
|
251
251
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
252
|
+
// Try to find matching entry in table Maybe should check application types
|
|
253
|
+
// first to allow application override? Might also be useful to have a flag
|
|
254
|
+
// which indicates table is sorted and we can do a binary search. For now
|
|
255
|
+
// stick to a linear search.
|
|
256
256
|
|
|
257
257
|
for (atbl = adb->tbl, i = 0; i < adb->tblcount; i++, atbl++) {
|
|
258
258
|
if (atbl->value == selector) {
|
|
@@ -260,16 +260,16 @@ const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
|
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
// FIXME: need to search application table too
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
// No match, return default type
|
|
266
266
|
if (!adb->default_tt) {
|
|
267
267
|
goto err;
|
|
268
268
|
}
|
|
269
269
|
return adb->default_tt;
|
|
270
270
|
|
|
271
271
|
err:
|
|
272
|
-
|
|
272
|
+
// FIXME: should log the value or OID of unsupported type
|
|
273
273
|
if (nullerr) {
|
|
274
274
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE);
|
|
275
275
|
}
|