@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
|
@@ -64,183 +64,188 @@
|
|
|
64
64
|
#include <openssl/obj.h>
|
|
65
65
|
|
|
66
66
|
|
|
67
|
-
static int maybe_write(BIO *out, const void *buf, int len)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return out == NULL || BIO_write(out, buf, len) == len;
|
|
67
|
+
static int maybe_write(BIO *out, const void *buf, int len) {
|
|
68
|
+
// If |out| is NULL, ignore the output but report the length.
|
|
69
|
+
return out == NULL || BIO_write(out, buf, len) == len;
|
|
71
70
|
}
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
static int do_indent(BIO *out, int indent)
|
|
75
|
-
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return 0;
|
|
79
|
-
}
|
|
72
|
+
// do_indent prints |indent| spaces to |out|.
|
|
73
|
+
static int do_indent(BIO *out, int indent) {
|
|
74
|
+
for (int i = 0; i < indent; i++) {
|
|
75
|
+
if (!maybe_write(out, " ", 1)) {
|
|
76
|
+
return 0;
|
|
80
77
|
}
|
|
81
|
-
|
|
78
|
+
}
|
|
79
|
+
return 1;
|
|
82
80
|
}
|
|
83
81
|
|
|
84
|
-
#define FN_WIDTH_LN
|
|
85
|
-
#define FN_WIDTH_SN
|
|
82
|
+
#define FN_WIDTH_LN 25
|
|
83
|
+
#define FN_WIDTH_SN 10
|
|
86
84
|
|
|
87
85
|
static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
|
|
88
|
-
unsigned long flags)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
86
|
+
unsigned long flags) {
|
|
87
|
+
int i, prev = -1, orflags, cnt;
|
|
88
|
+
int fn_opt, fn_nid;
|
|
89
|
+
ASN1_OBJECT *fn;
|
|
90
|
+
ASN1_STRING *val;
|
|
91
|
+
X509_NAME_ENTRY *ent;
|
|
92
|
+
char objtmp[80];
|
|
93
|
+
const char *objbuf;
|
|
94
|
+
int outlen, len;
|
|
95
|
+
const char *sep_dn, *sep_mv, *sep_eq;
|
|
96
|
+
int sep_dn_len, sep_mv_len, sep_eq_len;
|
|
97
|
+
if (indent < 0) {
|
|
98
|
+
indent = 0;
|
|
99
|
+
}
|
|
100
|
+
outlen = indent;
|
|
101
|
+
if (!do_indent(out, indent)) {
|
|
102
|
+
return -1;
|
|
103
|
+
}
|
|
104
|
+
switch (flags & XN_FLAG_SEP_MASK) {
|
|
106
105
|
case XN_FLAG_SEP_MULTILINE:
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
sep_dn = "\n";
|
|
107
|
+
sep_dn_len = 1;
|
|
108
|
+
sep_mv = " + ";
|
|
109
|
+
sep_mv_len = 3;
|
|
110
|
+
break;
|
|
112
111
|
|
|
113
112
|
case XN_FLAG_SEP_COMMA_PLUS:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
sep_dn = ",";
|
|
114
|
+
sep_dn_len = 1;
|
|
115
|
+
sep_mv = "+";
|
|
116
|
+
sep_mv_len = 1;
|
|
117
|
+
indent = 0;
|
|
118
|
+
break;
|
|
120
119
|
|
|
121
120
|
case XN_FLAG_SEP_CPLUS_SPC:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
sep_dn = ", ";
|
|
122
|
+
sep_dn_len = 2;
|
|
123
|
+
sep_mv = " + ";
|
|
124
|
+
sep_mv_len = 3;
|
|
125
|
+
indent = 0;
|
|
126
|
+
break;
|
|
128
127
|
|
|
129
128
|
case XN_FLAG_SEP_SPLUS_SPC:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
129
|
+
sep_dn = "; ";
|
|
130
|
+
sep_dn_len = 2;
|
|
131
|
+
sep_mv = " + ";
|
|
132
|
+
sep_mv_len = 3;
|
|
133
|
+
indent = 0;
|
|
134
|
+
break;
|
|
136
135
|
|
|
137
136
|
default:
|
|
137
|
+
return -1;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (flags & XN_FLAG_SPC_EQ) {
|
|
141
|
+
sep_eq = " = ";
|
|
142
|
+
sep_eq_len = 3;
|
|
143
|
+
} else {
|
|
144
|
+
sep_eq = "=";
|
|
145
|
+
sep_eq_len = 1;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
fn_opt = flags & XN_FLAG_FN_MASK;
|
|
149
|
+
|
|
150
|
+
cnt = X509_NAME_entry_count(n);
|
|
151
|
+
for (i = 0; i < cnt; i++) {
|
|
152
|
+
if (flags & XN_FLAG_DN_REV) {
|
|
153
|
+
ent = X509_NAME_get_entry(n, cnt - i - 1);
|
|
154
|
+
} else {
|
|
155
|
+
ent = X509_NAME_get_entry(n, i);
|
|
156
|
+
}
|
|
157
|
+
if (prev != -1) {
|
|
158
|
+
if (prev == X509_NAME_ENTRY_set(ent)) {
|
|
159
|
+
if (!maybe_write(out, sep_mv, sep_mv_len)) {
|
|
160
|
+
return -1;
|
|
161
|
+
}
|
|
162
|
+
outlen += sep_mv_len;
|
|
163
|
+
} else {
|
|
164
|
+
if (!maybe_write(out, sep_dn, sep_dn_len)) {
|
|
165
|
+
return -1;
|
|
166
|
+
}
|
|
167
|
+
outlen += sep_dn_len;
|
|
168
|
+
if (!do_indent(out, indent)) {
|
|
169
|
+
return -1;
|
|
170
|
+
}
|
|
171
|
+
outlen += indent;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
prev = X509_NAME_ENTRY_set(ent);
|
|
175
|
+
fn = X509_NAME_ENTRY_get_object(ent);
|
|
176
|
+
val = X509_NAME_ENTRY_get_data(ent);
|
|
177
|
+
fn_nid = OBJ_obj2nid(fn);
|
|
178
|
+
if (fn_opt != XN_FLAG_FN_NONE) {
|
|
179
|
+
int objlen, fld_len;
|
|
180
|
+
if ((fn_opt == XN_FLAG_FN_OID) || (fn_nid == NID_undef)) {
|
|
181
|
+
OBJ_obj2txt(objtmp, sizeof objtmp, fn, 1);
|
|
182
|
+
fld_len = 0; // XXX: what should this be?
|
|
183
|
+
objbuf = objtmp;
|
|
184
|
+
} else {
|
|
185
|
+
if (fn_opt == XN_FLAG_FN_SN) {
|
|
186
|
+
fld_len = FN_WIDTH_SN;
|
|
187
|
+
objbuf = OBJ_nid2sn(fn_nid);
|
|
188
|
+
} else if (fn_opt == XN_FLAG_FN_LN) {
|
|
189
|
+
fld_len = FN_WIDTH_LN;
|
|
190
|
+
objbuf = OBJ_nid2ln(fn_nid);
|
|
191
|
+
} else {
|
|
192
|
+
fld_len = 0; // XXX: what should this be?
|
|
193
|
+
objbuf = "";
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
objlen = strlen(objbuf);
|
|
197
|
+
if (!maybe_write(out, objbuf, objlen)) {
|
|
198
|
+
return -1;
|
|
199
|
+
}
|
|
200
|
+
if ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {
|
|
201
|
+
if (!do_indent(out, fld_len - objlen)) {
|
|
202
|
+
return -1;
|
|
203
|
+
}
|
|
204
|
+
outlen += fld_len - objlen;
|
|
205
|
+
}
|
|
206
|
+
if (!maybe_write(out, sep_eq, sep_eq_len)) {
|
|
138
207
|
return -1;
|
|
208
|
+
}
|
|
209
|
+
outlen += objlen + sep_eq_len;
|
|
139
210
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
211
|
+
// If the field name is unknown then fix up the DER dump flag. We
|
|
212
|
+
// might want to limit this further so it will DER dump on anything
|
|
213
|
+
// other than a few 'standard' fields.
|
|
214
|
+
if ((fn_nid == NID_undef) && (flags & XN_FLAG_DUMP_UNKNOWN_FIELDS)) {
|
|
215
|
+
orflags = ASN1_STRFLGS_DUMP_ALL;
|
|
144
216
|
} else {
|
|
145
|
-
|
|
146
|
-
sep_eq_len = 1;
|
|
217
|
+
orflags = 0;
|
|
147
218
|
}
|
|
148
219
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
for (i = 0; i < cnt; i++) {
|
|
153
|
-
if (flags & XN_FLAG_DN_REV)
|
|
154
|
-
ent = X509_NAME_get_entry(n, cnt - i - 1);
|
|
155
|
-
else
|
|
156
|
-
ent = X509_NAME_get_entry(n, i);
|
|
157
|
-
if (prev != -1) {
|
|
158
|
-
if (prev == X509_NAME_ENTRY_set(ent)) {
|
|
159
|
-
if (!maybe_write(out, sep_mv, sep_mv_len))
|
|
160
|
-
return -1;
|
|
161
|
-
outlen += sep_mv_len;
|
|
162
|
-
} else {
|
|
163
|
-
if (!maybe_write(out, sep_dn, sep_dn_len))
|
|
164
|
-
return -1;
|
|
165
|
-
outlen += sep_dn_len;
|
|
166
|
-
if (!do_indent(out, indent))
|
|
167
|
-
return -1;
|
|
168
|
-
outlen += indent;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
prev = X509_NAME_ENTRY_set(ent);
|
|
172
|
-
fn = X509_NAME_ENTRY_get_object(ent);
|
|
173
|
-
val = X509_NAME_ENTRY_get_data(ent);
|
|
174
|
-
fn_nid = OBJ_obj2nid(fn);
|
|
175
|
-
if (fn_opt != XN_FLAG_FN_NONE) {
|
|
176
|
-
int objlen, fld_len;
|
|
177
|
-
if ((fn_opt == XN_FLAG_FN_OID) || (fn_nid == NID_undef)) {
|
|
178
|
-
OBJ_obj2txt(objtmp, sizeof objtmp, fn, 1);
|
|
179
|
-
fld_len = 0; /* XXX: what should this be? */
|
|
180
|
-
objbuf = objtmp;
|
|
181
|
-
} else {
|
|
182
|
-
if (fn_opt == XN_FLAG_FN_SN) {
|
|
183
|
-
fld_len = FN_WIDTH_SN;
|
|
184
|
-
objbuf = OBJ_nid2sn(fn_nid);
|
|
185
|
-
} else if (fn_opt == XN_FLAG_FN_LN) {
|
|
186
|
-
fld_len = FN_WIDTH_LN;
|
|
187
|
-
objbuf = OBJ_nid2ln(fn_nid);
|
|
188
|
-
} else {
|
|
189
|
-
fld_len = 0; /* XXX: what should this be? */
|
|
190
|
-
objbuf = "";
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
objlen = strlen(objbuf);
|
|
194
|
-
if (!maybe_write(out, objbuf, objlen))
|
|
195
|
-
return -1;
|
|
196
|
-
if ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {
|
|
197
|
-
if (!do_indent(out, fld_len - objlen))
|
|
198
|
-
return -1;
|
|
199
|
-
outlen += fld_len - objlen;
|
|
200
|
-
}
|
|
201
|
-
if (!maybe_write(out, sep_eq, sep_eq_len))
|
|
202
|
-
return -1;
|
|
203
|
-
outlen += objlen + sep_eq_len;
|
|
204
|
-
}
|
|
205
|
-
/*
|
|
206
|
-
* If the field name is unknown then fix up the DER dump flag. We
|
|
207
|
-
* might want to limit this further so it will DER dump on anything
|
|
208
|
-
* other than a few 'standard' fields.
|
|
209
|
-
*/
|
|
210
|
-
if ((fn_nid == NID_undef) && (flags & XN_FLAG_DUMP_UNKNOWN_FIELDS))
|
|
211
|
-
orflags = ASN1_STRFLGS_DUMP_ALL;
|
|
212
|
-
else
|
|
213
|
-
orflags = 0;
|
|
214
|
-
|
|
215
|
-
len = ASN1_STRING_print_ex(out, val, flags | orflags);
|
|
216
|
-
if (len < 0)
|
|
217
|
-
return -1;
|
|
218
|
-
outlen += len;
|
|
220
|
+
len = ASN1_STRING_print_ex(out, val, flags | orflags);
|
|
221
|
+
if (len < 0) {
|
|
222
|
+
return -1;
|
|
219
223
|
}
|
|
220
|
-
|
|
224
|
+
outlen += len;
|
|
225
|
+
}
|
|
226
|
+
return outlen;
|
|
221
227
|
}
|
|
222
228
|
|
|
223
229
|
int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
|
|
224
|
-
unsigned long flags)
|
|
225
|
-
{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
unsigned long flags) {
|
|
231
|
+
if (flags == XN_FLAG_COMPAT) {
|
|
232
|
+
return X509_NAME_print(out, nm, indent);
|
|
233
|
+
}
|
|
234
|
+
return do_name_ex(out, nm, indent, flags);
|
|
229
235
|
}
|
|
230
236
|
|
|
231
237
|
int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent,
|
|
232
|
-
unsigned long flags)
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return -1;
|
|
241
|
-
}
|
|
238
|
+
unsigned long flags) {
|
|
239
|
+
BIO *bio = NULL;
|
|
240
|
+
if (fp != NULL) {
|
|
241
|
+
// If |fp| is NULL, this function returns the number of bytes without
|
|
242
|
+
// writing.
|
|
243
|
+
bio = BIO_new_fp(fp, BIO_NOCLOSE);
|
|
244
|
+
if (bio == NULL) {
|
|
245
|
+
return -1;
|
|
242
246
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
247
|
+
}
|
|
248
|
+
int ret = X509_NAME_print_ex(bio, nm, indent, flags);
|
|
249
|
+
BIO_free(bio);
|
|
250
|
+
return ret;
|
|
246
251
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* are met:
|
|
10
10
|
*
|
|
11
11
|
* 1. Redistributions of source code must retain the above copyright
|
|
12
|
-
* notice, this list of conditions and the following disclaimer.
|
|
12
|
+
* notice, this list of conditions and the following disclaimer.
|
|
13
13
|
*
|
|
14
14
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
15
15
|
* notice, this list of conditions and the following disclaimer in
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
#include <openssl/asn1.h>
|
|
61
61
|
#include <openssl/asn1t.h>
|
|
62
62
|
#include <openssl/bio.h>
|
|
63
|
-
#include <openssl/evp.h>
|
|
64
63
|
#include <openssl/err.h>
|
|
64
|
+
#include <openssl/evp.h>
|
|
65
65
|
#include <openssl/obj.h>
|
|
66
66
|
|
|
67
67
|
#include "internal.h"
|
|
@@ -77,16 +77,16 @@ static int rsa_pss_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
ASN1_SEQUENCE_cb(RSA_PSS_PARAMS, rsa_pss_cb) = {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
ASN1_EXP_OPT(RSA_PSS_PARAMS, hashAlgorithm, X509_ALGOR, 0),
|
|
81
|
+
ASN1_EXP_OPT(RSA_PSS_PARAMS, maskGenAlgorithm, X509_ALGOR, 1),
|
|
82
|
+
ASN1_EXP_OPT(RSA_PSS_PARAMS, saltLength, ASN1_INTEGER, 2),
|
|
83
|
+
ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3),
|
|
84
84
|
} ASN1_SEQUENCE_END_cb(RSA_PSS_PARAMS, RSA_PSS_PARAMS)
|
|
85
85
|
|
|
86
86
|
IMPLEMENT_ASN1_FUNCTIONS(RSA_PSS_PARAMS)
|
|
87
87
|
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
// Given an MGF1 Algorithm ID decode to an Algorithm Identifier
|
|
90
90
|
static X509_ALGOR *rsa_mgf1_decode(X509_ALGOR *alg) {
|
|
91
91
|
if (alg == NULL || alg->parameter == NULL ||
|
|
92
92
|
OBJ_obj2nid(alg->algorithm) != NID_mgf1 ||
|
|
@@ -118,7 +118,7 @@ static RSA_PSS_PARAMS *rsa_pss_decode(const X509_ALGOR *alg,
|
|
|
118
118
|
return pss;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
// allocate and set algorithm ID from EVP_MD, default SHA1
|
|
122
122
|
static int rsa_md_to_algor(X509_ALGOR **palg, const EVP_MD *md) {
|
|
123
123
|
if (EVP_MD_type(md) == NID_sha1) {
|
|
124
124
|
return 1;
|
|
@@ -131,7 +131,7 @@ static int rsa_md_to_algor(X509_ALGOR **palg, const EVP_MD *md) {
|
|
|
131
131
|
return 1;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
// Allocate and set MGF1 algorithm ID from EVP_MD
|
|
135
135
|
static int rsa_md_to_mgf1(X509_ALGOR **palg, const EVP_MD *mgf1md) {
|
|
136
136
|
X509_ALGOR *algtmp = NULL;
|
|
137
137
|
ASN1_STRING *stmp = NULL;
|
|
@@ -140,7 +140,7 @@ static int rsa_md_to_mgf1(X509_ALGOR **palg, const EVP_MD *mgf1md) {
|
|
|
140
140
|
if (EVP_MD_type(mgf1md) == NID_sha1) {
|
|
141
141
|
return 1;
|
|
142
142
|
}
|
|
143
|
-
|
|
143
|
+
// need to embed algorithm ID inside another
|
|
144
144
|
if (!rsa_md_to_algor(&algtmp, mgf1md) ||
|
|
145
145
|
!ASN1_item_pack(algtmp, ASN1_ITEM_rptr(X509_ALGOR), &stmp)) {
|
|
146
146
|
goto err;
|
|
@@ -162,7 +162,7 @@ err:
|
|
|
162
162
|
return 0;
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
// convert algorithm ID to EVP_MD, default SHA1
|
|
166
166
|
static const EVP_MD *rsa_algor_to_md(X509_ALGOR *alg) {
|
|
167
167
|
const EVP_MD *md;
|
|
168
168
|
if (!alg) {
|
|
@@ -175,16 +175,15 @@ static const EVP_MD *rsa_algor_to_md(X509_ALGOR *alg) {
|
|
|
175
175
|
return md;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
// convert MGF1 algorithm ID to EVP_MD, default SHA1
|
|
179
179
|
static const EVP_MD *rsa_mgf1_to_md(const X509_ALGOR *alg,
|
|
180
180
|
X509_ALGOR *maskHash) {
|
|
181
181
|
const EVP_MD *md;
|
|
182
182
|
if (!alg) {
|
|
183
183
|
return EVP_sha1();
|
|
184
184
|
}
|
|
185
|
-
|
|
186
|
-
if (OBJ_obj2nid(alg->algorithm) != NID_mgf1 ||
|
|
187
|
-
maskHash == NULL) {
|
|
185
|
+
// Check mask and lookup mask hash algorithm
|
|
186
|
+
if (OBJ_obj2nid(alg->algorithm) != NID_mgf1 || maskHash == NULL) {
|
|
188
187
|
OPENSSL_PUT_ERROR(X509, X509_R_INVALID_PSS_PARAMETERS);
|
|
189
188
|
return NULL;
|
|
190
189
|
}
|
|
@@ -230,8 +229,7 @@ int x509_rsa_ctx_to_pss(EVP_MD_CTX *ctx, X509_ALGOR *algor) {
|
|
|
230
229
|
|
|
231
230
|
if (saltlen != 20) {
|
|
232
231
|
pss->saltLength = ASN1_INTEGER_new();
|
|
233
|
-
if (!pss->saltLength ||
|
|
234
|
-
!ASN1_INTEGER_set(pss->saltLength, saltlen)) {
|
|
232
|
+
if (!pss->saltLength || !ASN1_INTEGER_set(pss->saltLength, saltlen)) {
|
|
235
233
|
goto err;
|
|
236
234
|
}
|
|
237
235
|
}
|
|
@@ -241,7 +239,7 @@ int x509_rsa_ctx_to_pss(EVP_MD_CTX *ctx, X509_ALGOR *algor) {
|
|
|
241
239
|
goto err;
|
|
242
240
|
}
|
|
243
241
|
|
|
244
|
-
|
|
242
|
+
// Finally create string with pss parameter encoding.
|
|
245
243
|
if (!ASN1_item_pack(pss, ASN1_ITEM_rptr(RSA_PSS_PARAMS), &os)) {
|
|
246
244
|
goto err;
|
|
247
245
|
}
|
|
@@ -260,7 +258,7 @@ int x509_rsa_pss_to_ctx(EVP_MD_CTX *ctx, const X509_ALGOR *sigalg,
|
|
|
260
258
|
EVP_PKEY *pkey) {
|
|
261
259
|
assert(OBJ_obj2nid(sigalg->algorithm) == NID_rsassaPss);
|
|
262
260
|
|
|
263
|
-
|
|
261
|
+
// Decode PSS parameters
|
|
264
262
|
int ret = 0;
|
|
265
263
|
X509_ALGOR *maskHash;
|
|
266
264
|
RSA_PSS_PARAMS *pss = rsa_pss_decode(sigalg, &maskHash);
|
|
@@ -279,16 +277,16 @@ int x509_rsa_pss_to_ctx(EVP_MD_CTX *ctx, const X509_ALGOR *sigalg,
|
|
|
279
277
|
if (pss->saltLength != NULL) {
|
|
280
278
|
saltlen = ASN1_INTEGER_get(pss->saltLength);
|
|
281
279
|
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
// Could perform more salt length sanity checks but the main
|
|
281
|
+
// RSA routines will trap other invalid values anyway.
|
|
284
282
|
if (saltlen < 0) {
|
|
285
283
|
OPENSSL_PUT_ERROR(X509, X509_R_INVALID_PSS_PARAMETERS);
|
|
286
284
|
goto err;
|
|
287
285
|
}
|
|
288
286
|
}
|
|
289
287
|
|
|
290
|
-
|
|
291
|
-
|
|
288
|
+
// low-level routines support only trailer field 0xbc (value 1)
|
|
289
|
+
// and PKCS#1 says we should reject any other value anyway.
|
|
292
290
|
if (pss->trailerField != NULL && ASN1_INTEGER_get(pss->trailerField) != 1) {
|
|
293
291
|
OPENSSL_PUT_ERROR(X509, X509_R_INVALID_PSS_PARAMETERS);
|
|
294
292
|
goto err;
|
|
@@ -325,8 +323,8 @@ int x509_print_rsa_pss_params(BIO *bp, const X509_ALGOR *sigalg, int indent,
|
|
|
325
323
|
goto err;
|
|
326
324
|
}
|
|
327
325
|
|
|
328
|
-
if (BIO_puts(bp, "\n") <= 0 ||
|
|
329
|
-
!BIO_indent(bp, indent, 128) ||
|
|
326
|
+
if (BIO_puts(bp, "\n") <= 0 || //
|
|
327
|
+
!BIO_indent(bp, indent, 128) || //
|
|
330
328
|
BIO_puts(bp, "Hash Algorithm: ") <= 0) {
|
|
331
329
|
goto err;
|
|
332
330
|
}
|
|
@@ -339,8 +337,8 @@ int x509_print_rsa_pss_params(BIO *bp, const X509_ALGOR *sigalg, int indent,
|
|
|
339
337
|
goto err;
|
|
340
338
|
}
|
|
341
339
|
|
|
342
|
-
if (BIO_puts(bp, "\n") <= 0 ||
|
|
343
|
-
!BIO_indent(bp, indent, 128) ||
|
|
340
|
+
if (BIO_puts(bp, "\n") <= 0 || //
|
|
341
|
+
!BIO_indent(bp, indent, 128) || //
|
|
344
342
|
BIO_puts(bp, "Mask Algorithm: ") <= 0) {
|
|
345
343
|
goto err;
|
|
346
344
|
}
|
|
@@ -363,7 +361,7 @@ int x509_print_rsa_pss_params(BIO *bp, const X509_ALGOR *sigalg, int indent,
|
|
|
363
361
|
}
|
|
364
362
|
BIO_puts(bp, "\n");
|
|
365
363
|
|
|
366
|
-
if (!BIO_indent(bp, indent, 128) ||
|
|
364
|
+
if (!BIO_indent(bp, indent, 128) || //
|
|
367
365
|
BIO_puts(bp, "Salt Length: 0x") <= 0) {
|
|
368
366
|
goto err;
|
|
369
367
|
}
|
|
@@ -377,7 +375,7 @@ int x509_print_rsa_pss_params(BIO *bp, const X509_ALGOR *sigalg, int indent,
|
|
|
377
375
|
}
|
|
378
376
|
BIO_puts(bp, "\n");
|
|
379
377
|
|
|
380
|
-
if (!BIO_indent(bp, indent, 128) ||
|
|
378
|
+
if (!BIO_indent(bp, indent, 128) || //
|
|
381
379
|
BIO_puts(bp, "Trailer Field: 0x") <= 0) {
|
|
382
380
|
goto err;
|
|
383
381
|
}
|
|
@@ -63,86 +63,83 @@
|
|
|
63
63
|
#include <openssl/x509.h>
|
|
64
64
|
#include <openssl/x509v3.h>
|
|
65
65
|
|
|
66
|
-
int X509_CRL_print_fp(FILE *fp, X509_CRL *x)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return ret;
|
|
66
|
+
int X509_CRL_print_fp(FILE *fp, X509_CRL *x) {
|
|
67
|
+
BIO *b = BIO_new_fp(fp, BIO_NOCLOSE);
|
|
68
|
+
if (b == NULL) {
|
|
69
|
+
OPENSSL_PUT_ERROR(X509, ERR_R_BUF_LIB);
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
int ret = X509_CRL_print(b, x);
|
|
73
|
+
BIO_free(b);
|
|
74
|
+
return ret;
|
|
76
75
|
}
|
|
77
76
|
|
|
78
|
-
int X509_CRL_print(BIO *out, X509_CRL *x)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
77
|
+
int X509_CRL_print(BIO *out, X509_CRL *x) {
|
|
78
|
+
long version = X509_CRL_get_version(x);
|
|
79
|
+
assert(X509_CRL_VERSION_1 <= version && version <= X509_CRL_VERSION_2);
|
|
80
|
+
const X509_ALGOR *sig_alg;
|
|
81
|
+
const ASN1_BIT_STRING *signature;
|
|
82
|
+
X509_CRL_get0_signature(x, &signature, &sig_alg);
|
|
83
|
+
if (BIO_printf(out, "Certificate Revocation List (CRL):\n") <= 0 ||
|
|
84
|
+
BIO_printf(out, "%8sVersion %ld (0x%lx)\n", "", version + 1,
|
|
85
|
+
(unsigned long)version) <= 0 ||
|
|
86
|
+
// Note this and the other |X509_signature_print| call both print the
|
|
87
|
+
// outer signature algorithm, rather than printing the inner and outer
|
|
88
|
+
// ones separately. This matches OpenSSL, though it was probably a bug.
|
|
89
|
+
!X509_signature_print(out, sig_alg, NULL)) {
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
94
92
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
93
|
+
char *issuer = X509_NAME_oneline(X509_CRL_get_issuer(x), NULL, 0);
|
|
94
|
+
int ok = issuer != NULL && BIO_printf(out, "%8sIssuer: %s\n", "", issuer) > 0;
|
|
95
|
+
OPENSSL_free(issuer);
|
|
96
|
+
if (!ok) {
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
102
99
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
100
|
+
if (BIO_printf(out, "%8sLast Update: ", "") <= 0 ||
|
|
101
|
+
!ASN1_TIME_print(out, X509_CRL_get0_lastUpdate(x)) ||
|
|
102
|
+
BIO_printf(out, "\n%8sNext Update: ", "") <= 0) {
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
if (X509_CRL_get0_nextUpdate(x)) {
|
|
106
|
+
if (!ASN1_TIME_print(out, X509_CRL_get0_nextUpdate(x))) {
|
|
107
|
+
return 0;
|
|
107
108
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
if (BIO_printf(out, "NONE") <= 0) {
|
|
114
|
-
return 0;
|
|
115
|
-
}
|
|
109
|
+
} else {
|
|
110
|
+
if (BIO_printf(out, "NONE") <= 0) {
|
|
111
|
+
return 0;
|
|
116
112
|
}
|
|
113
|
+
}
|
|
117
114
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
if (BIO_printf(out, "\n") <= 0 ||
|
|
116
|
+
!X509V3_extensions_print(out, "CRL extensions",
|
|
117
|
+
X509_CRL_get0_extensions(x), 0, 8)) {
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
123
120
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
121
|
+
const STACK_OF(X509_REVOKED) *rev = X509_CRL_get_REVOKED(x);
|
|
122
|
+
if (sk_X509_REVOKED_num(rev) > 0) {
|
|
123
|
+
if (BIO_printf(out, "Revoked Certificates:\n") <= 0) {
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
if (BIO_printf(out, "No Revoked Certificates.\n") <= 0) {
|
|
128
|
+
return 0;
|
|
133
129
|
}
|
|
130
|
+
}
|
|
134
131
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
132
|
+
for (size_t i = 0; i < sk_X509_REVOKED_num(rev); i++) {
|
|
133
|
+
const X509_REVOKED *r = sk_X509_REVOKED_value(rev, i);
|
|
134
|
+
if (BIO_printf(out, " Serial Number: ") <= 0 ||
|
|
135
|
+
i2a_ASN1_INTEGER(out, X509_REVOKED_get0_serialNumber(r)) <= 0 ||
|
|
136
|
+
BIO_printf(out, "\n Revocation Date: ") <= 0 ||
|
|
137
|
+
!ASN1_TIME_print(out, X509_REVOKED_get0_revocationDate(r)) ||
|
|
138
|
+
BIO_printf(out, "\n") <= 0 ||
|
|
139
|
+
!X509V3_extensions_print(out, "CRL entry extensions",
|
|
140
|
+
X509_REVOKED_get0_extensions(r), 0, 8)) {
|
|
145
141
|
}
|
|
142
|
+
}
|
|
146
143
|
|
|
147
|
-
|
|
144
|
+
return X509_signature_print(out, sig_alg, signature);
|
|
148
145
|
}
|