grpc 1.9.1 → 1.10.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -64,59 +64,59 @@ extern "C" {
|
|
64
64
|
#endif
|
65
65
|
|
66
66
|
|
67
|
-
|
67
|
+
// Memory and string functions, see also mem.h.
|
68
68
|
|
69
69
|
|
70
|
-
|
70
|
+
// buf_mem_st (aka |BUF_MEM|) is a generic buffer object used by OpenSSL.
|
71
71
|
struct buf_mem_st {
|
72
|
-
size_t length;
|
72
|
+
size_t length; // current number of bytes
|
73
73
|
char *data;
|
74
|
-
size_t max;
|
74
|
+
size_t max; // size of buffer
|
75
75
|
};
|
76
76
|
|
77
|
-
|
77
|
+
// BUF_MEM_new creates a new BUF_MEM which has no allocated data buffer.
|
78
78
|
OPENSSL_EXPORT BUF_MEM *BUF_MEM_new(void);
|
79
79
|
|
80
|
-
|
80
|
+
// BUF_MEM_free frees |buf->data| if needed and then frees |buf| itself.
|
81
81
|
OPENSSL_EXPORT void BUF_MEM_free(BUF_MEM *buf);
|
82
82
|
|
83
|
-
|
84
|
-
|
83
|
+
// BUF_MEM_reserve ensures |buf| has capacity |cap| and allocates memory if
|
84
|
+
// needed. It returns one on success and zero on error.
|
85
85
|
OPENSSL_EXPORT int BUF_MEM_reserve(BUF_MEM *buf, size_t cap);
|
86
86
|
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
// BUF_MEM_grow ensures that |buf| has length |len| and allocates memory if
|
88
|
+
// needed. If the length of |buf| increased, the new bytes are filled with
|
89
|
+
// zeros. It returns the length of |buf|, or zero if there's an error.
|
90
90
|
OPENSSL_EXPORT size_t BUF_MEM_grow(BUF_MEM *buf, size_t len);
|
91
91
|
|
92
|
-
|
93
|
-
|
94
|
-
OPENSSL_EXPORT size_t BUF_MEM_grow_clean(BUF_MEM *
|
92
|
+
// BUF_MEM_grow_clean calls |BUF_MEM_grow|. BoringSSL always zeros memory
|
93
|
+
// allocated memory on free.
|
94
|
+
OPENSSL_EXPORT size_t BUF_MEM_grow_clean(BUF_MEM *buf, size_t len);
|
95
95
|
|
96
|
-
|
96
|
+
// BUF_strdup returns an allocated, duplicate of |str|.
|
97
97
|
OPENSSL_EXPORT char *BUF_strdup(const char *str);
|
98
98
|
|
99
|
-
|
100
|
-
|
101
|
-
|
99
|
+
// BUF_strnlen returns the number of characters in |str|, excluding the NUL
|
100
|
+
// byte, but at most |max_len|. This function never reads more than |max_len|
|
101
|
+
// bytes from |str|.
|
102
102
|
OPENSSL_EXPORT size_t BUF_strnlen(const char *str, size_t max_len);
|
103
103
|
|
104
|
-
|
105
|
-
|
104
|
+
// BUF_strndup returns an allocated, duplicate of |str|, which is, at most,
|
105
|
+
// |size| bytes. The result is always NUL terminated.
|
106
106
|
OPENSSL_EXPORT char *BUF_strndup(const char *str, size_t size);
|
107
107
|
|
108
|
-
|
108
|
+
// BUF_memdup returns an allocated, duplicate of |size| bytes from |data|.
|
109
109
|
OPENSSL_EXPORT void *BUF_memdup(const void *data, size_t size);
|
110
110
|
|
111
|
-
|
111
|
+
// BUF_strlcpy acts like strlcpy(3).
|
112
112
|
OPENSSL_EXPORT size_t BUF_strlcpy(char *dst, const char *src, size_t dst_size);
|
113
113
|
|
114
|
-
|
115
|
-
OPENSSL_EXPORT size_t BUF_strlcat(char *dst, const char *src, size_t
|
114
|
+
// BUF_strlcat acts like strlcat(3).
|
115
|
+
OPENSSL_EXPORT size_t BUF_strlcat(char *dst, const char *src, size_t dst_size);
|
116
116
|
|
117
117
|
|
118
118
|
#if defined(__cplusplus)
|
119
|
-
}
|
119
|
+
} // extern C
|
120
120
|
|
121
121
|
extern "C++" {
|
122
122
|
|
@@ -126,8 +126,8 @@ BORINGSSL_MAKE_DELETER(BUF_MEM, BUF_MEM_free)
|
|
126
126
|
|
127
127
|
} // namespace bssl
|
128
128
|
|
129
|
-
}
|
129
|
+
} // extern C++
|
130
130
|
|
131
131
|
#endif
|
132
132
|
|
133
|
-
#endif
|
133
|
+
#endif // OPENSSL_HEADER_BUFFER_H
|
@@ -17,275 +17,290 @@
|
|
17
17
|
|
18
18
|
#include <openssl/base.h>
|
19
19
|
|
20
|
+
#include <openssl/span.h>
|
21
|
+
|
20
22
|
#if defined(__cplusplus)
|
21
23
|
extern "C" {
|
22
24
|
#endif
|
23
25
|
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
// Bytestrings are used for parsing and building TLS and ASN.1 messages.
|
28
|
+
//
|
29
|
+
// A "CBS" (CRYPTO ByteString) represents a string of bytes in memory and
|
30
|
+
// provides utility functions for safely parsing length-prefixed structures
|
31
|
+
// like TLS and ASN.1 from it.
|
32
|
+
//
|
33
|
+
// A "CBB" (CRYPTO ByteBuilder) is a memory buffer that grows as needed and
|
34
|
+
// provides utility functions for building length-prefixed messages.
|
33
35
|
|
34
36
|
|
35
|
-
|
37
|
+
// CRYPTO ByteString
|
36
38
|
|
37
39
|
struct cbs_st {
|
38
40
|
const uint8_t *data;
|
39
41
|
size_t len;
|
42
|
+
|
43
|
+
#if !defined(BORINGSSL_NO_CXX)
|
44
|
+
// Allow implicit conversions to and from bssl::Span<const uint8_t>.
|
45
|
+
cbs_st(bssl::Span<const uint8_t> span)
|
46
|
+
: data(span.data()), len(span.size()) {}
|
47
|
+
operator bssl::Span<const uint8_t>() const {
|
48
|
+
return bssl::MakeConstSpan(data, len);
|
49
|
+
}
|
50
|
+
|
51
|
+
// Defining any constructors requires we explicitly default the others.
|
52
|
+
cbs_st() = default;
|
53
|
+
cbs_st(const cbs_st &) = default;
|
54
|
+
#endif
|
40
55
|
};
|
41
56
|
|
42
|
-
|
43
|
-
|
57
|
+
// CBS_init sets |cbs| to point to |data|. It does not take ownership of
|
58
|
+
// |data|.
|
44
59
|
OPENSSL_EXPORT void CBS_init(CBS *cbs, const uint8_t *data, size_t len);
|
45
60
|
|
46
|
-
|
47
|
-
|
61
|
+
// CBS_skip advances |cbs| by |len| bytes. It returns one on success and zero
|
62
|
+
// otherwise.
|
48
63
|
OPENSSL_EXPORT int CBS_skip(CBS *cbs, size_t len);
|
49
64
|
|
50
|
-
|
65
|
+
// CBS_data returns a pointer to the contents of |cbs|.
|
51
66
|
OPENSSL_EXPORT const uint8_t *CBS_data(const CBS *cbs);
|
52
67
|
|
53
|
-
|
68
|
+
// CBS_len returns the number of bytes remaining in |cbs|.
|
54
69
|
OPENSSL_EXPORT size_t CBS_len(const CBS *cbs);
|
55
70
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
71
|
+
// CBS_stow copies the current contents of |cbs| into |*out_ptr| and
|
72
|
+
// |*out_len|. If |*out_ptr| is not NULL, the contents are freed with
|
73
|
+
// OPENSSL_free. It returns one on success and zero on allocation failure. On
|
74
|
+
// success, |*out_ptr| should be freed with OPENSSL_free. If |cbs| is empty,
|
75
|
+
// |*out_ptr| will be NULL.
|
61
76
|
OPENSSL_EXPORT int CBS_stow(const CBS *cbs, uint8_t **out_ptr, size_t *out_len);
|
62
77
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
78
|
+
// CBS_strdup copies the current contents of |cbs| into |*out_ptr| as a
|
79
|
+
// NUL-terminated C string. If |*out_ptr| is not NULL, the contents are freed
|
80
|
+
// with OPENSSL_free. It returns one on success and zero on allocation
|
81
|
+
// failure. On success, |*out_ptr| should be freed with OPENSSL_free.
|
82
|
+
//
|
83
|
+
// NOTE: If |cbs| contains NUL bytes, the string will be truncated. Call
|
84
|
+
// |CBS_contains_zero_byte(cbs)| to check for NUL bytes.
|
70
85
|
OPENSSL_EXPORT int CBS_strdup(const CBS *cbs, char **out_ptr);
|
71
86
|
|
72
|
-
|
73
|
-
|
87
|
+
// CBS_contains_zero_byte returns one if the current contents of |cbs| contains
|
88
|
+
// a NUL byte and zero otherwise.
|
74
89
|
OPENSSL_EXPORT int CBS_contains_zero_byte(const CBS *cbs);
|
75
90
|
|
76
|
-
|
77
|
-
|
78
|
-
|
91
|
+
// CBS_mem_equal compares the current contents of |cbs| with the |len| bytes
|
92
|
+
// starting at |data|. If they're equal, it returns one, otherwise zero. If the
|
93
|
+
// lengths match, it uses a constant-time comparison.
|
79
94
|
OPENSSL_EXPORT int CBS_mem_equal(const CBS *cbs, const uint8_t *data,
|
80
95
|
size_t len);
|
81
96
|
|
82
|
-
|
83
|
-
|
97
|
+
// CBS_get_u8 sets |*out| to the next uint8_t from |cbs| and advances |cbs|. It
|
98
|
+
// returns one on success and zero on error.
|
84
99
|
OPENSSL_EXPORT int CBS_get_u8(CBS *cbs, uint8_t *out);
|
85
100
|
|
86
|
-
|
87
|
-
|
101
|
+
// CBS_get_u16 sets |*out| to the next, big-endian uint16_t from |cbs| and
|
102
|
+
// advances |cbs|. It returns one on success and zero on error.
|
88
103
|
OPENSSL_EXPORT int CBS_get_u16(CBS *cbs, uint16_t *out);
|
89
104
|
|
90
|
-
|
91
|
-
|
105
|
+
// CBS_get_u24 sets |*out| to the next, big-endian 24-bit value from |cbs| and
|
106
|
+
// advances |cbs|. It returns one on success and zero on error.
|
92
107
|
OPENSSL_EXPORT int CBS_get_u24(CBS *cbs, uint32_t *out);
|
93
108
|
|
94
|
-
|
95
|
-
|
109
|
+
// CBS_get_u32 sets |*out| to the next, big-endian uint32_t value from |cbs|
|
110
|
+
// and advances |cbs|. It returns one on success and zero on error.
|
96
111
|
OPENSSL_EXPORT int CBS_get_u32(CBS *cbs, uint32_t *out);
|
97
112
|
|
98
|
-
|
99
|
-
|
113
|
+
// CBS_get_last_u8 sets |*out| to the last uint8_t from |cbs| and shortens
|
114
|
+
// |cbs|. It returns one on success and zero on error.
|
100
115
|
OPENSSL_EXPORT int CBS_get_last_u8(CBS *cbs, uint8_t *out);
|
101
116
|
|
102
|
-
|
103
|
-
|
117
|
+
// CBS_get_bytes sets |*out| to the next |len| bytes from |cbs| and advances
|
118
|
+
// |cbs|. It returns one on success and zero on error.
|
104
119
|
OPENSSL_EXPORT int CBS_get_bytes(CBS *cbs, CBS *out, size_t len);
|
105
120
|
|
106
|
-
|
107
|
-
|
121
|
+
// CBS_copy_bytes copies the next |len| bytes from |cbs| to |out| and advances
|
122
|
+
// |cbs|. It returns one on success and zero on error.
|
108
123
|
OPENSSL_EXPORT int CBS_copy_bytes(CBS *cbs, uint8_t *out, size_t len);
|
109
124
|
|
110
|
-
|
111
|
-
|
112
|
-
|
125
|
+
// CBS_get_u8_length_prefixed sets |*out| to the contents of an 8-bit,
|
126
|
+
// length-prefixed value from |cbs| and advances |cbs| over it. It returns one
|
127
|
+
// on success and zero on error.
|
113
128
|
OPENSSL_EXPORT int CBS_get_u8_length_prefixed(CBS *cbs, CBS *out);
|
114
129
|
|
115
|
-
|
116
|
-
|
117
|
-
|
130
|
+
// CBS_get_u16_length_prefixed sets |*out| to the contents of a 16-bit,
|
131
|
+
// big-endian, length-prefixed value from |cbs| and advances |cbs| over it. It
|
132
|
+
// returns one on success and zero on error.
|
118
133
|
OPENSSL_EXPORT int CBS_get_u16_length_prefixed(CBS *cbs, CBS *out);
|
119
134
|
|
120
|
-
|
121
|
-
|
122
|
-
|
135
|
+
// CBS_get_u24_length_prefixed sets |*out| to the contents of a 24-bit,
|
136
|
+
// big-endian, length-prefixed value from |cbs| and advances |cbs| over it. It
|
137
|
+
// returns one on success and zero on error.
|
123
138
|
OPENSSL_EXPORT int CBS_get_u24_length_prefixed(CBS *cbs, CBS *out);
|
124
139
|
|
125
140
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
#define CBS_ASN1_BOOLEAN
|
130
|
-
#define CBS_ASN1_INTEGER
|
131
|
-
#define CBS_ASN1_BITSTRING
|
132
|
-
#define CBS_ASN1_OCTETSTRING
|
133
|
-
#define CBS_ASN1_NULL
|
134
|
-
#define CBS_ASN1_OBJECT
|
135
|
-
#define CBS_ASN1_ENUMERATED
|
136
|
-
#define CBS_ASN1_UTF8STRING
|
137
|
-
#define CBS_ASN1_SEQUENCE (
|
138
|
-
#define CBS_ASN1_SET (
|
139
|
-
#define CBS_ASN1_NUMERICSTRING
|
140
|
-
#define CBS_ASN1_PRINTABLESTRING
|
141
|
-
#define
|
142
|
-
#define CBS_ASN1_VIDEOTEXSTRING
|
143
|
-
#define CBS_ASN1_IA5STRING
|
144
|
-
#define CBS_ASN1_UTCTIME
|
145
|
-
#define CBS_ASN1_GENERALIZEDTIME
|
146
|
-
#define CBS_ASN1_GRAPHICSTRING
|
147
|
-
#define CBS_ASN1_VISIBLESTRING
|
148
|
-
#define CBS_ASN1_GENERALSTRING
|
149
|
-
#define CBS_ASN1_UNIVERSALSTRING
|
150
|
-
#define CBS_ASN1_BMPSTRING
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
#define CBS_ASN1_CONSTRUCTED
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
#define CBS_ASN1_APPLICATION
|
165
|
-
#define CBS_ASN1_CONTEXT_SPECIFIC
|
166
|
-
#define CBS_ASN1_PRIVATE
|
167
|
-
|
168
|
-
|
169
|
-
#define CBS_ASN1_CLASS_MASK
|
170
|
-
|
171
|
-
|
172
|
-
#define CBS_ASN1_TAG_NUMBER_MASK
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
141
|
+
// Parsing ASN.1
|
142
|
+
|
143
|
+
// The following values are tag numbers for UNIVERSAL elements.
|
144
|
+
#define CBS_ASN1_BOOLEAN 0x1u
|
145
|
+
#define CBS_ASN1_INTEGER 0x2u
|
146
|
+
#define CBS_ASN1_BITSTRING 0x3u
|
147
|
+
#define CBS_ASN1_OCTETSTRING 0x4u
|
148
|
+
#define CBS_ASN1_NULL 0x5u
|
149
|
+
#define CBS_ASN1_OBJECT 0x6u
|
150
|
+
#define CBS_ASN1_ENUMERATED 0xau
|
151
|
+
#define CBS_ASN1_UTF8STRING 0xcu
|
152
|
+
#define CBS_ASN1_SEQUENCE (0x10u | CBS_ASN1_CONSTRUCTED)
|
153
|
+
#define CBS_ASN1_SET (0x11u | CBS_ASN1_CONSTRUCTED)
|
154
|
+
#define CBS_ASN1_NUMERICSTRING 0x12u
|
155
|
+
#define CBS_ASN1_PRINTABLESTRING 0x13u
|
156
|
+
#define CBS_ASN1_T61STRING 0x14u
|
157
|
+
#define CBS_ASN1_VIDEOTEXSTRING 0x15u
|
158
|
+
#define CBS_ASN1_IA5STRING 0x16u
|
159
|
+
#define CBS_ASN1_UTCTIME 0x17u
|
160
|
+
#define CBS_ASN1_GENERALIZEDTIME 0x18u
|
161
|
+
#define CBS_ASN1_GRAPHICSTRING 0x19u
|
162
|
+
#define CBS_ASN1_VISIBLESTRING 0x1au
|
163
|
+
#define CBS_ASN1_GENERALSTRING 0x1bu
|
164
|
+
#define CBS_ASN1_UNIVERSALSTRING 0x1cu
|
165
|
+
#define CBS_ASN1_BMPSTRING 0x1eu
|
166
|
+
|
167
|
+
// CBS_ASN1_CONSTRUCTED may be ORed into a tag to toggle the constructed
|
168
|
+
// bit. |CBS| and |CBB| APIs consider the constructed bit to be part of the
|
169
|
+
// tag.
|
170
|
+
#define CBS_ASN1_CONSTRUCTED 0x20u
|
171
|
+
|
172
|
+
// The following values specify the constructed bit or tag class and may be ORed
|
173
|
+
// into a tag number to produce the final tag. If none is used, the tag will be
|
174
|
+
// UNIVERSAL.
|
175
|
+
//
|
176
|
+
// Note that although they currently match the DER serialization, consumers must
|
177
|
+
// use these bits rather than make assumptions about the representation. This is
|
178
|
+
// to allow for tag numbers beyond 31 in the future.
|
179
|
+
#define CBS_ASN1_APPLICATION 0x40u
|
180
|
+
#define CBS_ASN1_CONTEXT_SPECIFIC 0x80u
|
181
|
+
#define CBS_ASN1_PRIVATE 0xc0u
|
182
|
+
|
183
|
+
// CBS_ASN1_CLASS_MASK may be ANDed with a tag to query its class.
|
184
|
+
#define CBS_ASN1_CLASS_MASK 0xc0u
|
185
|
+
|
186
|
+
// CBS_ASN1_TAG_NUMBER_MASK may be ANDed with a tag to query its number.
|
187
|
+
#define CBS_ASN1_TAG_NUMBER_MASK 0x1fu
|
188
|
+
|
189
|
+
// CBS_get_asn1 sets |*out| to the contents of DER-encoded, ASN.1 element (not
|
190
|
+
// including tag and length bytes) and advances |cbs| over it. The ASN.1
|
191
|
+
// element must match |tag_value|. It returns one on success and zero
|
192
|
+
// on error.
|
193
|
+
//
|
194
|
+
// Tag numbers greater than 30 are not supported (i.e. short form only).
|
180
195
|
OPENSSL_EXPORT int CBS_get_asn1(CBS *cbs, CBS *out, unsigned tag_value);
|
181
196
|
|
182
|
-
|
183
|
-
|
197
|
+
// CBS_get_asn1_element acts like |CBS_get_asn1| but |out| will include the
|
198
|
+
// ASN.1 header bytes too.
|
184
199
|
OPENSSL_EXPORT int CBS_get_asn1_element(CBS *cbs, CBS *out, unsigned tag_value);
|
185
200
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
201
|
+
// CBS_peek_asn1_tag looks ahead at the next ASN.1 tag and returns one
|
202
|
+
// if the next ASN.1 element on |cbs| would have tag |tag_value|. If
|
203
|
+
// |cbs| is empty or the tag does not match, it returns zero. Note: if
|
204
|
+
// it returns one, CBS_get_asn1 may still fail if the rest of the
|
205
|
+
// element is malformed.
|
191
206
|
OPENSSL_EXPORT int CBS_peek_asn1_tag(const CBS *cbs, unsigned tag_value);
|
192
207
|
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
208
|
+
// CBS_get_any_asn1 sets |*out| to contain the next ASN.1 element from |*cbs|
|
209
|
+
// (not including tag and length bytes), sets |*out_tag| to the tag number, and
|
210
|
+
// advances |*cbs|. It returns one on success and zero on error. Either of |out|
|
211
|
+
// and |out_tag| may be NULL to ignore the value.
|
212
|
+
//
|
213
|
+
// Tag numbers greater than 30 are not supported (i.e. short form only).
|
199
214
|
OPENSSL_EXPORT int CBS_get_any_asn1(CBS *cbs, CBS *out, unsigned *out_tag);
|
200
215
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
216
|
+
// CBS_get_any_asn1_element sets |*out| to contain the next ASN.1 element from
|
217
|
+
// |*cbs| (including header bytes) and advances |*cbs|. It sets |*out_tag| to
|
218
|
+
// the tag number and |*out_header_len| to the length of the ASN.1 header. Each
|
219
|
+
// of |out|, |out_tag|, and |out_header_len| may be NULL to ignore the value.
|
220
|
+
//
|
221
|
+
// Tag numbers greater than 30 are not supported (i.e. short form only).
|
207
222
|
OPENSSL_EXPORT int CBS_get_any_asn1_element(CBS *cbs, CBS *out,
|
208
223
|
unsigned *out_tag,
|
209
224
|
size_t *out_header_len);
|
210
225
|
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
226
|
+
// CBS_get_any_ber_asn1_element acts the same as |CBS_get_any_asn1_element| but
|
227
|
+
// also allows indefinite-length elements to be returned. In that case,
|
228
|
+
// |*out_header_len| and |CBS_len(out)| will both be two as only the header is
|
229
|
+
// returned, otherwise it behaves the same as the previous function.
|
215
230
|
OPENSSL_EXPORT int CBS_get_any_ber_asn1_element(CBS *cbs, CBS *out,
|
216
231
|
unsigned *out_tag,
|
217
232
|
size_t *out_header_len);
|
218
233
|
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
234
|
+
// CBS_get_asn1_uint64 gets an ASN.1 INTEGER from |cbs| using |CBS_get_asn1|
|
235
|
+
// and sets |*out| to its value. It returns one on success and zero on error,
|
236
|
+
// where error includes the integer being negative, or too large to represent
|
237
|
+
// in 64 bits.
|
223
238
|
OPENSSL_EXPORT int CBS_get_asn1_uint64(CBS *cbs, uint64_t *out);
|
224
239
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
240
|
+
// CBS_get_optional_asn1 gets an optional explicitly-tagged element from |cbs|
|
241
|
+
// tagged with |tag| and sets |*out| to its contents. If present and if
|
242
|
+
// |out_present| is not NULL, it sets |*out_present| to one, otherwise zero. It
|
243
|
+
// returns one on success, whether or not the element was present, and zero on
|
244
|
+
// decode failure.
|
230
245
|
OPENSSL_EXPORT int CBS_get_optional_asn1(CBS *cbs, CBS *out, int *out_present,
|
231
246
|
unsigned tag);
|
232
247
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
248
|
+
// CBS_get_optional_asn1_octet_string gets an optional
|
249
|
+
// explicitly-tagged OCTET STRING from |cbs|. If present, it sets
|
250
|
+
// |*out| to the string and |*out_present| to one. Otherwise, it sets
|
251
|
+
// |*out| to empty and |*out_present| to zero. |out_present| may be
|
252
|
+
// NULL. It returns one on success, whether or not the element was
|
253
|
+
// present, and zero on decode failure.
|
239
254
|
OPENSSL_EXPORT int CBS_get_optional_asn1_octet_string(CBS *cbs, CBS *out,
|
240
255
|
int *out_present,
|
241
256
|
unsigned tag);
|
242
257
|
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
258
|
+
// CBS_get_optional_asn1_uint64 gets an optional explicitly-tagged
|
259
|
+
// INTEGER from |cbs|. If present, it sets |*out| to the
|
260
|
+
// value. Otherwise, it sets |*out| to |default_value|. It returns one
|
261
|
+
// on success, whether or not the element was present, and zero on
|
262
|
+
// decode failure.
|
248
263
|
OPENSSL_EXPORT int CBS_get_optional_asn1_uint64(CBS *cbs, uint64_t *out,
|
249
264
|
unsigned tag,
|
250
265
|
uint64_t default_value);
|
251
266
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
267
|
+
// CBS_get_optional_asn1_bool gets an optional, explicitly-tagged BOOLEAN from
|
268
|
+
// |cbs|. If present, it sets |*out| to either zero or one, based on the
|
269
|
+
// boolean. Otherwise, it sets |*out| to |default_value|. It returns one on
|
270
|
+
// success, whether or not the element was present, and zero on decode
|
271
|
+
// failure.
|
257
272
|
OPENSSL_EXPORT int CBS_get_optional_asn1_bool(CBS *cbs, int *out, unsigned tag,
|
258
273
|
int default_value);
|
259
274
|
|
260
|
-
|
261
|
-
|
275
|
+
// CBS_is_valid_asn1_bitstring returns one if |cbs| is a valid ASN.1 BIT STRING
|
276
|
+
// and zero otherwise.
|
262
277
|
OPENSSL_EXPORT int CBS_is_valid_asn1_bitstring(const CBS *cbs);
|
263
278
|
|
264
|
-
|
265
|
-
|
266
|
-
|
279
|
+
// CBS_asn1_bitstring_has_bit returns one if |cbs| is a valid ASN.1 BIT STRING
|
280
|
+
// and the specified bit is present and set. Otherwise, it returns zero. |bit|
|
281
|
+
// is indexed starting from zero.
|
267
282
|
OPENSSL_EXPORT int CBS_asn1_bitstring_has_bit(const CBS *cbs, unsigned bit);
|
268
283
|
|
269
284
|
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
285
|
+
// CRYPTO ByteBuilder.
|
286
|
+
//
|
287
|
+
// |CBB| objects allow one to build length-prefixed serialisations. A |CBB|
|
288
|
+
// object is associated with a buffer and new buffers are created with
|
289
|
+
// |CBB_init|. Several |CBB| objects can point at the same buffer when a
|
290
|
+
// length-prefix is pending, however only a single |CBB| can be 'current' at
|
291
|
+
// any one time. For example, if one calls |CBB_add_u8_length_prefixed| then
|
292
|
+
// the new |CBB| points at the same buffer as the original. But if the original
|
293
|
+
// |CBB| is used then the length prefix is written out and the new |CBB| must
|
294
|
+
// not be used again.
|
295
|
+
//
|
296
|
+
// If one needs to force a length prefix to be written out because a |CBB| is
|
297
|
+
// going out of scope, use |CBB_flush|. If an operation on a |CBB| fails, it is
|
298
|
+
// in an undefined state and must not be used except to call |CBB_cleanup|.
|
284
299
|
|
285
300
|
struct cbb_buffer_st {
|
286
301
|
uint8_t *buf;
|
287
|
-
size_t len;
|
288
|
-
size_t cap;
|
302
|
+
size_t len; // The number of valid bytes.
|
303
|
+
size_t cap; // The size of buf.
|
289
304
|
char can_resize; /* One iff |buf| is owned by this object. If not then |buf|
|
290
305
|
cannot be resized. */
|
291
306
|
char error; /* One iff there was an error writing to this CBB. All future
|
@@ -294,147 +309,147 @@ struct cbb_buffer_st {
|
|
294
309
|
|
295
310
|
struct cbb_st {
|
296
311
|
struct cbb_buffer_st *base;
|
297
|
-
|
312
|
+
// child points to a child CBB if a length-prefix is pending.
|
298
313
|
CBB *child;
|
299
|
-
|
300
|
-
|
314
|
+
// offset is the number of bytes from the start of |base->buf| to this |CBB|'s
|
315
|
+
// pending length prefix.
|
301
316
|
size_t offset;
|
302
|
-
|
303
|
-
|
317
|
+
// pending_len_len contains the number of bytes in this |CBB|'s pending
|
318
|
+
// length-prefix, or zero if no length-prefix is pending.
|
304
319
|
uint8_t pending_len_len;
|
305
320
|
char pending_is_asn1;
|
306
|
-
|
307
|
-
|
321
|
+
// is_top_level is true iff this is a top-level |CBB| (as opposed to a child
|
322
|
+
// |CBB|). Top-level objects are valid arguments for |CBB_finish|.
|
308
323
|
char is_top_level;
|
309
324
|
};
|
310
325
|
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
326
|
+
// CBB_zero sets an uninitialised |cbb| to the zero state. It must be
|
327
|
+
// initialised with |CBB_init| or |CBB_init_fixed| before use, but it is safe to
|
328
|
+
// call |CBB_cleanup| without a successful |CBB_init|. This may be used for more
|
329
|
+
// uniform cleanup of a |CBB|.
|
315
330
|
OPENSSL_EXPORT void CBB_zero(CBB *cbb);
|
316
331
|
|
317
|
-
|
318
|
-
|
319
|
-
|
332
|
+
// CBB_init initialises |cbb| with |initial_capacity|. Since a |CBB| grows as
|
333
|
+
// needed, the |initial_capacity| is just a hint. It returns one on success or
|
334
|
+
// zero on error.
|
320
335
|
OPENSSL_EXPORT int CBB_init(CBB *cbb, size_t initial_capacity);
|
321
336
|
|
322
|
-
|
323
|
-
|
324
|
-
|
337
|
+
// CBB_init_fixed initialises |cbb| to write to |len| bytes at |buf|. Since
|
338
|
+
// |buf| cannot grow, trying to write more than |len| bytes will cause CBB
|
339
|
+
// functions to fail. It returns one on success or zero on error.
|
325
340
|
OPENSSL_EXPORT int CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len);
|
326
341
|
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
342
|
+
// CBB_cleanup frees all resources owned by |cbb| and other |CBB| objects
|
343
|
+
// writing to the same buffer. This should be used in an error case where a
|
344
|
+
// serialisation is abandoned.
|
345
|
+
//
|
346
|
+
// This function can only be called on a "top level" |CBB|, i.e. one initialised
|
347
|
+
// with |CBB_init| or |CBB_init_fixed|, or a |CBB| set to the zero state with
|
348
|
+
// |CBB_zero|.
|
334
349
|
OPENSSL_EXPORT void CBB_cleanup(CBB *cbb);
|
335
350
|
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
351
|
+
// CBB_finish completes any pending length prefix and sets |*out_data| to a
|
352
|
+
// malloced buffer and |*out_len| to the length of that buffer. The caller
|
353
|
+
// takes ownership of the buffer and, unless the buffer was fixed with
|
354
|
+
// |CBB_init_fixed|, must call |OPENSSL_free| when done.
|
355
|
+
//
|
356
|
+
// It can only be called on a "top level" |CBB|, i.e. one initialised with
|
357
|
+
// |CBB_init| or |CBB_init_fixed|. It returns one on success and zero on
|
358
|
+
// error.
|
344
359
|
OPENSSL_EXPORT int CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len);
|
345
360
|
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
361
|
+
// CBB_flush causes any pending length prefixes to be written out and any child
|
362
|
+
// |CBB| objects of |cbb| to be invalidated. This allows |cbb| to continue to be
|
363
|
+
// used after the children go out of scope, e.g. when local |CBB| objects are
|
364
|
+
// added as children to a |CBB| that persists after a function returns. This
|
365
|
+
// function returns one on success or zero on error.
|
351
366
|
OPENSSL_EXPORT int CBB_flush(CBB *cbb);
|
352
367
|
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
368
|
+
// CBB_data returns a pointer to the bytes written to |cbb|. It does not flush
|
369
|
+
// |cbb|. The pointer is valid until the next operation to |cbb|.
|
370
|
+
//
|
371
|
+
// To avoid unfinalized length prefixes, it is a fatal error to call this on a
|
372
|
+
// CBB with any active children.
|
358
373
|
OPENSSL_EXPORT const uint8_t *CBB_data(const CBB *cbb);
|
359
374
|
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
375
|
+
// CBB_len returns the number of bytes written to |cbb|. It does not flush
|
376
|
+
// |cbb|.
|
377
|
+
//
|
378
|
+
// To avoid unfinalized length prefixes, it is a fatal error to call this on a
|
379
|
+
// CBB with any active children.
|
365
380
|
OPENSSL_EXPORT size_t CBB_len(const CBB *cbb);
|
366
381
|
|
367
|
-
|
368
|
-
|
369
|
-
|
382
|
+
// CBB_add_u8_length_prefixed sets |*out_contents| to a new child of |cbb|. The
|
383
|
+
// data written to |*out_contents| will be prefixed in |cbb| with an 8-bit
|
384
|
+
// length. It returns one on success or zero on error.
|
370
385
|
OPENSSL_EXPORT int CBB_add_u8_length_prefixed(CBB *cbb, CBB *out_contents);
|
371
386
|
|
372
|
-
|
373
|
-
|
374
|
-
|
387
|
+
// CBB_add_u16_length_prefixed sets |*out_contents| to a new child of |cbb|.
|
388
|
+
// The data written to |*out_contents| will be prefixed in |cbb| with a 16-bit,
|
389
|
+
// big-endian length. It returns one on success or zero on error.
|
375
390
|
OPENSSL_EXPORT int CBB_add_u16_length_prefixed(CBB *cbb, CBB *out_contents);
|
376
391
|
|
377
|
-
|
378
|
-
|
379
|
-
|
392
|
+
// CBB_add_u24_length_prefixed sets |*out_contents| to a new child of |cbb|.
|
393
|
+
// The data written to |*out_contents| will be prefixed in |cbb| with a 24-bit,
|
394
|
+
// big-endian length. It returns one on success or zero on error.
|
380
395
|
OPENSSL_EXPORT int CBB_add_u24_length_prefixed(CBB *cbb, CBB *out_contents);
|
381
396
|
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
397
|
+
// CBB_add_asn1 sets |*out_contents| to a |CBB| into which the contents of an
|
398
|
+
// ASN.1 object can be written. The |tag| argument will be used as the tag for
|
399
|
+
// the object. Passing in |tag| number 31 will return in an error since only
|
400
|
+
// single octet identifiers are supported. It returns one on success or zero
|
401
|
+
// on error.
|
387
402
|
OPENSSL_EXPORT int CBB_add_asn1(CBB *cbb, CBB *out_contents, unsigned tag);
|
388
403
|
|
389
|
-
|
390
|
-
|
404
|
+
// CBB_add_bytes appends |len| bytes from |data| to |cbb|. It returns one on
|
405
|
+
// success and zero otherwise.
|
391
406
|
OPENSSL_EXPORT int CBB_add_bytes(CBB *cbb, const uint8_t *data, size_t len);
|
392
407
|
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
408
|
+
// CBB_add_space appends |len| bytes to |cbb| and sets |*out_data| to point to
|
409
|
+
// the beginning of that space. The caller must then write |len| bytes of
|
410
|
+
// actual contents to |*out_data|. It returns one on success and zero
|
411
|
+
// otherwise.
|
397
412
|
OPENSSL_EXPORT int CBB_add_space(CBB *cbb, uint8_t **out_data, size_t len);
|
398
413
|
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
414
|
+
// CBB_reserve ensures |cbb| has room for |len| additional bytes and sets
|
415
|
+
// |*out_data| to point to the beginning of that space. It returns one on
|
416
|
+
// success and zero otherwise. The caller may write up to |len| bytes to
|
417
|
+
// |*out_data| and call |CBB_did_write| to complete the write. |*out_data| is
|
418
|
+
// valid until the next operation on |cbb| or an ancestor |CBB|.
|
404
419
|
OPENSSL_EXPORT int CBB_reserve(CBB *cbb, uint8_t **out_data, size_t len);
|
405
420
|
|
406
|
-
|
407
|
-
|
421
|
+
// CBB_did_write advances |cbb| by |len| bytes, assuming the space has been
|
422
|
+
// written to by the caller. It returns one on success and zero on error.
|
408
423
|
OPENSSL_EXPORT int CBB_did_write(CBB *cbb, size_t len);
|
409
424
|
|
410
|
-
|
411
|
-
|
425
|
+
// CBB_add_u8 appends an 8-bit number from |value| to |cbb|. It returns one on
|
426
|
+
// success and zero otherwise.
|
412
427
|
OPENSSL_EXPORT int CBB_add_u8(CBB *cbb, uint8_t value);
|
413
428
|
|
414
|
-
|
415
|
-
|
429
|
+
// CBB_add_u16 appends a 16-bit, big-endian number from |value| to |cbb|. It
|
430
|
+
// returns one on success and zero otherwise.
|
416
431
|
OPENSSL_EXPORT int CBB_add_u16(CBB *cbb, uint16_t value);
|
417
432
|
|
418
|
-
|
419
|
-
|
433
|
+
// CBB_add_u24 appends a 24-bit, big-endian number from |value| to |cbb|. It
|
434
|
+
// returns one on success and zero otherwise.
|
420
435
|
OPENSSL_EXPORT int CBB_add_u24(CBB *cbb, uint32_t value);
|
421
436
|
|
422
|
-
|
423
|
-
|
437
|
+
// CBB_add_u32 appends a 32-bit, big-endian number from |value| to |cbb|. It
|
438
|
+
// returns one on success and zero otherwise.
|
424
439
|
OPENSSL_EXPORT int CBB_add_u32(CBB *cbb, uint32_t value);
|
425
440
|
|
426
|
-
|
427
|
-
|
441
|
+
// CBB_discard_child discards the current unflushed child of |cbb|. Neither the
|
442
|
+
// child's contents nor the length prefix will be included in the output.
|
428
443
|
OPENSSL_EXPORT void CBB_discard_child(CBB *cbb);
|
429
444
|
|
430
|
-
|
431
|
-
|
432
|
-
|
445
|
+
// CBB_add_asn1_uint64 writes an ASN.1 INTEGER into |cbb| using |CBB_add_asn1|
|
446
|
+
// and writes |value| in its contents. It returns one on success and zero on
|
447
|
+
// error.
|
433
448
|
OPENSSL_EXPORT int CBB_add_asn1_uint64(CBB *cbb, uint64_t value);
|
434
449
|
|
435
450
|
|
436
451
|
#if defined(__cplusplus)
|
437
|
-
}
|
452
|
+
} // extern C
|
438
453
|
|
439
454
|
|
440
455
|
#if !defined(BORINGSSL_NO_CXX)
|
@@ -451,4 +466,4 @@ using ScopedCBB = internal::StackAllocated<CBB, void, CBB_zero, CBB_cleanup>;
|
|
451
466
|
|
452
467
|
#endif
|
453
468
|
|
454
|
-
#endif
|
469
|
+
#endif // OPENSSL_HEADER_BYTESTRING_H
|