grpc 1.24.0 → 1.25.0
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 +306 -243
- data/etc/roots.pem +0 -100
- data/include/grpc/grpc_security.h +44 -18
- data/include/grpc/impl/codegen/grpc_types.h +15 -0
- data/include/grpc/impl/codegen/port_platform.h +27 -11
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/src/boringssl/err_data.c +695 -650
- data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
- data/src/core/ext/filters/client_channel/client_channel.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
- data/src/core/ext/filters/client_channel/resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver.h +8 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
- data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
- data/src/core/ext/filters/client_channel/service_config.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
- data/src/core/ext/filters/client_channel/subchannel.h +7 -9
- data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
- data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
- data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
- data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
- data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
- data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
- data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
- data/src/core/lib/channel/channel_args.cc +16 -0
- data/src/core/lib/channel/channel_args.h +22 -0
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +20 -20
- data/src/core/lib/channel/handshaker.h +3 -4
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/inlined_vector.h +9 -0
- data/src/core/lib/gprpp/map.h +3 -501
- data/src/core/lib/gprpp/memory.h +45 -41
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +6 -11
- data/src/core/lib/gprpp/ref_counted.h +25 -19
- data/src/core/lib/gprpp/set.h +33 -0
- data/src/core/lib/gprpp/thd.h +2 -4
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli_security_connector.cc +15 -11
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/iomgr/buffer_list.cc +4 -5
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +4 -5
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.h +3 -5
- data/src/core/lib/iomgr/closure.h +8 -3
- data/src/core/lib/iomgr/combiner.cc +45 -82
- data/src/core/lib/iomgr/combiner.h +32 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
- data/src/core/lib/iomgr/exec_ctx.h +4 -3
- data/src/core/lib/iomgr/executor.cc +4 -2
- data/src/core/lib/iomgr/executor.h +3 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
- data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
- data/src/core/lib/iomgr/executor/threadpool.h +7 -11
- data/src/core/lib/iomgr/resource_quota.cc +55 -51
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
- data/src/core/lib/iomgr/tcp_custom.cc +9 -7
- data/src/core/lib/iomgr/tcp_posix.cc +20 -16
- data/src/core/lib/iomgr/tcp_server.h +1 -4
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +3 -2
- data/src/core/lib/iomgr/udp_server.h +6 -12
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_string.cc +2 -2
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +4 -20
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/security_connector.h +19 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.cc +29 -13
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
- data/src/core/lib/slice/slice.cc +2 -10
- data/src/core/lib/slice/slice_hash_table.h +4 -6
- data/src/core/lib/slice/slice_intern.cc +42 -39
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_utils.h +21 -4
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
- data/src/core/lib/surface/call.cc +3 -3
- data/src/core/lib/surface/channel.cc +7 -0
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/completion_queue.h +4 -2
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/lame_client.cc +33 -18
- data/src/core/lib/surface/server.cc +77 -76
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -7
- data/src/core/lib/transport/connectivity_state.cc +112 -98
- data/src/core/lib/transport/connectivity_state.h +100 -50
- data/src/core/lib/transport/static_metadata.cc +276 -288
- data/src/core/lib/transport/static_metadata.h +73 -76
- data/src/core/lib/transport/status_conversion.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +1 -1
- data/src/core/lib/transport/transport.cc +2 -2
- data/src/core/lib/transport/transport.h +12 -4
- data/src/core/lib/transport/transport_op_string.cc +14 -11
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +7 -5
- data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +12 -12
- data/src/core/tsi/ssl_transport_security.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +6 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
- data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
- data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
- data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
- data/third_party/boringssl/crypto/base64/base64.c +2 -2
- data/third_party/boringssl/crypto/bio/bio.c +73 -9
- data/third_party/boringssl/crypto/bio/connect.c +4 -0
- data/third_party/boringssl/crypto/bio/fd.c +4 -0
- data/third_party/boringssl/crypto/bio/file.c +5 -2
- data/third_party/boringssl/crypto/bio/socket.c +4 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
- data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
- data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
- data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
- data/third_party/boringssl/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
- data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
- data/third_party/boringssl/crypto/conf/conf.c +7 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
- data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
- data/third_party/boringssl/crypto/cpu-intel.c +45 -51
- data/third_party/boringssl/crypto/crypto.c +39 -22
- data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
- data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
- data/third_party/boringssl/crypto/engine/engine.c +2 -1
- data/third_party/boringssl/crypto/err/err.c +2 -0
- data/third_party/boringssl/crypto/err/internal.h +2 -2
- data/third_party/boringssl/crypto/evp/evp.c +89 -8
- data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
- data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
- data/third_party/boringssl/crypto/evp/internal.h +18 -1
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
- data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
- data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
- data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
- data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
- data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
- data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
- data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
- data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
- data/third_party/boringssl/crypto/hrss/internal.h +62 -0
- data/third_party/boringssl/crypto/internal.h +95 -20
- data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
- data/third_party/boringssl/crypto/mem.c +39 -2
- data/third_party/boringssl/crypto/obj/obj.c +4 -4
- data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
- data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
- data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
- data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
- data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
- data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
- data/third_party/boringssl/crypto/pool/internal.h +1 -1
- data/third_party/boringssl/crypto/pool/pool.c +21 -0
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
- data/third_party/boringssl/crypto/stack/stack.c +83 -32
- data/third_party/boringssl/crypto/thread_none.c +2 -2
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +38 -19
- data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
- data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
- data/third_party/boringssl/crypto/x509/by_file.c +12 -10
- data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
- data/third_party/boringssl/crypto/x509/t_req.c +1 -3
- data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
- data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
- data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
- data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
- data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
- data/third_party/boringssl/crypto/x509/x509name.c +2 -3
- data/third_party/boringssl/crypto/x509/x_all.c +109 -210
- data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
- data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
- data/third_party/boringssl/include/openssl/aead.h +45 -19
- data/third_party/boringssl/include/openssl/aes.h +32 -7
- data/third_party/boringssl/include/openssl/asn1.h +7 -77
- data/third_party/boringssl/include/openssl/base.h +120 -6
- data/third_party/boringssl/include/openssl/base64.h +4 -1
- data/third_party/boringssl/include/openssl/bio.h +112 -81
- data/third_party/boringssl/include/openssl/blowfish.h +3 -3
- data/third_party/boringssl/include/openssl/bn.h +55 -29
- data/third_party/boringssl/include/openssl/buf.h +2 -2
- data/third_party/boringssl/include/openssl/bytestring.h +54 -32
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +46 -16
- data/third_party/boringssl/include/openssl/cmac.h +6 -2
- data/third_party/boringssl/include/openssl/conf.h +3 -6
- data/third_party/boringssl/include/openssl/cpu.h +25 -9
- data/third_party/boringssl/include/openssl/crypto.h +32 -10
- data/third_party/boringssl/include/openssl/curve25519.h +4 -4
- data/third_party/boringssl/include/openssl/dh.h +3 -2
- data/third_party/boringssl/include/openssl/digest.h +21 -7
- data/third_party/boringssl/include/openssl/dsa.h +8 -2
- data/third_party/boringssl/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl/include/openssl/ec.h +25 -21
- data/third_party/boringssl/include/openssl/ec_key.h +36 -8
- data/third_party/boringssl/include/openssl/ecdh.h +17 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
- data/third_party/boringssl/include/openssl/engine.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -0
- data/third_party/boringssl/include/openssl/evp.h +199 -42
- data/third_party/boringssl/include/openssl/hmac.h +4 -4
- data/third_party/boringssl/include/openssl/hrss.h +100 -0
- data/third_party/boringssl/include/openssl/lhash.h +131 -23
- data/third_party/boringssl/include/openssl/md4.h +6 -4
- data/third_party/boringssl/include/openssl/md5.h +6 -4
- data/third_party/boringssl/include/openssl/mem.h +6 -2
- data/third_party/boringssl/include/openssl/nid.h +3 -0
- data/third_party/boringssl/include/openssl/obj.h +3 -0
- data/third_party/boringssl/include/openssl/pem.h +102 -64
- data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
- data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
- data/third_party/boringssl/include/openssl/pool.h +13 -2
- data/third_party/boringssl/include/openssl/ripemd.h +5 -4
- data/third_party/boringssl/include/openssl/rsa.h +46 -15
- data/third_party/boringssl/include/openssl/sha.h +40 -28
- data/third_party/boringssl/include/openssl/siphash.h +37 -0
- data/third_party/boringssl/include/openssl/span.h +17 -9
- data/third_party/boringssl/include/openssl/ssl.h +766 -393
- data/third_party/boringssl/include/openssl/ssl3.h +4 -3
- data/third_party/boringssl/include/openssl/stack.h +134 -77
- data/third_party/boringssl/include/openssl/thread.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +25 -9
- data/third_party/boringssl/include/openssl/type_check.h +14 -15
- data/third_party/boringssl/include/openssl/x509.h +28 -3
- data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
- data/third_party/boringssl/include/openssl/x509v3.h +17 -13
- data/third_party/boringssl/ssl/d1_both.cc +9 -18
- data/third_party/boringssl/ssl/d1_lib.cc +4 -3
- data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
- data/third_party/boringssl/ssl/dtls_method.cc +0 -1
- data/third_party/boringssl/ssl/dtls_record.cc +28 -28
- data/third_party/boringssl/ssl/handoff.cc +295 -91
- data/third_party/boringssl/ssl/handshake.cc +133 -72
- data/third_party/boringssl/ssl/handshake_client.cc +218 -189
- data/third_party/boringssl/ssl/handshake_server.cc +399 -272
- data/third_party/boringssl/ssl/internal.h +1413 -928
- data/third_party/boringssl/ssl/s3_both.cc +175 -36
- data/third_party/boringssl/ssl/s3_lib.cc +9 -13
- data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
- data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
- data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
- data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
- data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
- data/third_party/boringssl/ssl/ssl_file.cc +2 -0
- data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
- data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
- data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
- data/third_party/boringssl/ssl/ssl_session.cc +230 -178
- data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
- data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
- data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
- data/third_party/boringssl/ssl/t1_enc.cc +5 -96
- data/third_party/boringssl/ssl/t1_lib.cc +931 -678
- data/third_party/boringssl/ssl/tls13_both.cc +251 -121
- data/third_party/boringssl/ssl/tls13_client.cc +129 -73
- data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
- data/third_party/boringssl/ssl/tls13_server.cc +259 -192
- data/third_party/boringssl/ssl/tls_method.cc +26 -21
- data/third_party/boringssl/ssl/tls_record.cc +42 -47
- data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
- data/third_party/boringssl/third_party/fiat/p256.c +238 -999
- data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
- data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +2 -1
- metadata +72 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -47
- data/src/core/lib/gprpp/pair.h +0 -38
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -105,7 +105,7 @@ OPENSSL_EXPORT void HMAC_CTX_free(HMAC_CTX *ctx);
|
|
105
105
|
// function and |key| as the key. For a non-initial call, |md| may be NULL, in
|
106
106
|
// which case the previous hash function will be used. If the hash function has
|
107
107
|
// not changed and |key| is NULL, |ctx| reuses the previous key. It returns one
|
108
|
-
// on success or zero
|
108
|
+
// on success or zero on allocation failure.
|
109
109
|
//
|
110
110
|
// WARNING: NULL and empty keys are ambiguous on non-initial calls. Passing NULL
|
111
111
|
// |key| but repeating the previous |md| reuses the previous key rather than the
|
@@ -122,7 +122,7 @@ OPENSSL_EXPORT int HMAC_Update(HMAC_CTX *ctx, const uint8_t *data,
|
|
122
122
|
// |out| and the sets |*out_len| to the length of the result. On entry, |out|
|
123
123
|
// must contain at least |HMAC_size| bytes of space. An output size of
|
124
124
|
// |EVP_MAX_MD_SIZE| will always be large enough. It returns one on success or
|
125
|
-
// zero on
|
125
|
+
// zero on allocation failure.
|
126
126
|
OPENSSL_EXPORT int HMAC_Final(HMAC_CTX *ctx, uint8_t *out,
|
127
127
|
unsigned int *out_len);
|
128
128
|
|
@@ -169,14 +169,14 @@ struct hmac_ctx_st {
|
|
169
169
|
#if !defined(BORINGSSL_NO_CXX)
|
170
170
|
extern "C++" {
|
171
171
|
|
172
|
-
|
172
|
+
BSSL_NAMESPACE_BEGIN
|
173
173
|
|
174
174
|
BORINGSSL_MAKE_DELETER(HMAC_CTX, HMAC_CTX_free)
|
175
175
|
|
176
176
|
using ScopedHMAC_CTX =
|
177
177
|
internal::StackAllocated<HMAC_CTX, void, HMAC_CTX_init, HMAC_CTX_cleanup>;
|
178
178
|
|
179
|
-
|
179
|
+
BSSL_NAMESPACE_END
|
180
180
|
|
181
181
|
} // extern C++
|
182
182
|
#endif
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/* Copyright (c) 2018, Google Inc.
|
2
|
+
*
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
6
|
+
*
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
14
|
+
|
15
|
+
#ifndef OPENSSL_HEADER_HRSS_H
|
16
|
+
#define OPENSSL_HEADER_HRSS_H
|
17
|
+
|
18
|
+
#include <openssl/base.h>
|
19
|
+
|
20
|
+
#if defined(__cplusplus)
|
21
|
+
extern "C" {
|
22
|
+
#endif
|
23
|
+
|
24
|
+
// HRSS
|
25
|
+
//
|
26
|
+
// HRSS is a structured-lattice-based post-quantum key encapsulation mechanism.
|
27
|
+
// The best exposition is https://eprint.iacr.org/2017/667.pdf although this
|
28
|
+
// implementation uses a different KEM construction based on
|
29
|
+
// https://eprint.iacr.org/2017/1005.pdf.
|
30
|
+
|
31
|
+
struct HRSS_private_key {
|
32
|
+
uint8_t opaque[1808];
|
33
|
+
};
|
34
|
+
|
35
|
+
struct HRSS_public_key {
|
36
|
+
uint8_t opaque[1424];
|
37
|
+
};
|
38
|
+
|
39
|
+
// HRSS_SAMPLE_BYTES is the number of bytes of entropy needed to generate a
|
40
|
+
// short vector. There are 701 coefficients, but the final one is always set to
|
41
|
+
// zero when sampling. Otherwise, we need one byte of input per coefficient.
|
42
|
+
#define HRSS_SAMPLE_BYTES (701 - 1)
|
43
|
+
// HRSS_GENERATE_KEY_BYTES is the number of bytes of entropy needed to generate
|
44
|
+
// an HRSS key pair.
|
45
|
+
#define HRSS_GENERATE_KEY_BYTES (HRSS_SAMPLE_BYTES + HRSS_SAMPLE_BYTES + 32)
|
46
|
+
// HRSS_ENCAP_BYTES is the number of bytes of entropy needed to encapsulate a
|
47
|
+
// session key.
|
48
|
+
#define HRSS_ENCAP_BYTES (HRSS_SAMPLE_BYTES + HRSS_SAMPLE_BYTES)
|
49
|
+
// HRSS_PUBLIC_KEY_BYTES is the number of bytes in a public key.
|
50
|
+
#define HRSS_PUBLIC_KEY_BYTES 1138
|
51
|
+
// HRSS_CIPHERTEXT_BYTES is the number of bytes in a ciphertext.
|
52
|
+
#define HRSS_CIPHERTEXT_BYTES 1138
|
53
|
+
// HRSS_KEY_BYTES is the number of bytes in a shared key.
|
54
|
+
#define HRSS_KEY_BYTES 32
|
55
|
+
// HRSS_POLY3_BYTES is the number of bytes needed to serialise a mod 3
|
56
|
+
// polynomial.
|
57
|
+
#define HRSS_POLY3_BYTES 140
|
58
|
+
#define HRSS_PRIVATE_KEY_BYTES \
|
59
|
+
(HRSS_POLY3_BYTES * 2 + HRSS_PUBLIC_KEY_BYTES + 2 + 32)
|
60
|
+
|
61
|
+
// HRSS_generate_key is a deterministic function that outputs a public and
|
62
|
+
// private key based on the given entropy.
|
63
|
+
OPENSSL_EXPORT void HRSS_generate_key(
|
64
|
+
struct HRSS_public_key *out_pub, struct HRSS_private_key *out_priv,
|
65
|
+
const uint8_t input[HRSS_GENERATE_KEY_BYTES]);
|
66
|
+
|
67
|
+
// HRSS_encap is a deterministic function the generates and encrypts a random
|
68
|
+
// session key from the given entropy, writing those values to |out_shared_key|
|
69
|
+
// and |out_ciphertext|, respectively.
|
70
|
+
OPENSSL_EXPORT void HRSS_encap(uint8_t out_ciphertext[HRSS_CIPHERTEXT_BYTES],
|
71
|
+
uint8_t out_shared_key[HRSS_KEY_BYTES],
|
72
|
+
const struct HRSS_public_key *in_pub,
|
73
|
+
const uint8_t in[HRSS_ENCAP_BYTES]);
|
74
|
+
|
75
|
+
// HRSS_decap decrypts a session key from |ciphertext_len| bytes of
|
76
|
+
// |ciphertext|. If the ciphertext is valid, the decrypted key is written to
|
77
|
+
// |out_shared_key|. Otherwise the HMAC of |ciphertext| under a secret key (kept
|
78
|
+
// in |in_priv|) is written. If the ciphertext is the wrong length then it will
|
79
|
+
// leak which was done via side-channels. Otherwise it should perform either
|
80
|
+
// action in constant-time.
|
81
|
+
OPENSSL_EXPORT void HRSS_decap(uint8_t out_shared_key[HRSS_KEY_BYTES],
|
82
|
+
const struct HRSS_private_key *in_priv,
|
83
|
+
const uint8_t *ciphertext,
|
84
|
+
size_t ciphertext_len);
|
85
|
+
|
86
|
+
// HRSS_marshal_public_key serialises |in_pub| to |out|.
|
87
|
+
OPENSSL_EXPORT void HRSS_marshal_public_key(
|
88
|
+
uint8_t out[HRSS_PUBLIC_KEY_BYTES], const struct HRSS_public_key *in_pub);
|
89
|
+
|
90
|
+
// HRSS_parse_public_key sets |*out| to the public-key encoded in |in|. It
|
91
|
+
// returns true on success and zero on error.
|
92
|
+
OPENSSL_EXPORT int HRSS_parse_public_key(
|
93
|
+
struct HRSS_public_key *out, const uint8_t in[HRSS_PUBLIC_KEY_BYTES]);
|
94
|
+
|
95
|
+
|
96
|
+
#if defined(__cplusplus)
|
97
|
+
} // extern C
|
98
|
+
#endif
|
99
|
+
|
100
|
+
#endif // OPENSSL_HEADER_HRSS_H
|
@@ -77,7 +77,7 @@ extern "C" {
|
|
77
77
|
// int bar;
|
78
78
|
// };
|
79
79
|
//
|
80
|
-
// DEFINE_LHASH_OF(struct foo)
|
80
|
+
// DEFINE_LHASH_OF(struct foo)
|
81
81
|
//
|
82
82
|
// Although note that the hash table will contain /pointers/ to |foo|.
|
83
83
|
//
|
@@ -87,23 +87,8 @@ extern "C" {
|
|
87
87
|
|
88
88
|
#define LHASH_OF(type) struct lhash_st_##type
|
89
89
|
|
90
|
-
#define DEFINE_LHASH_OF(type) LHASH_OF(type) { int dummy; }
|
91
|
-
|
92
90
|
#define DECLARE_LHASH_OF(type) LHASH_OF(type);
|
93
91
|
|
94
|
-
// The make_macros.sh script in this directory parses the following lines and
|
95
|
-
// generates the lhash_macros.h file that contains macros for the following
|
96
|
-
// types of stacks:
|
97
|
-
//
|
98
|
-
// LHASH_OF:ASN1_OBJECT
|
99
|
-
// LHASH_OF:CONF_VALUE
|
100
|
-
// LHASH_OF:CRYPTO_BUFFER
|
101
|
-
// LHASH_OF:SSL_SESSION
|
102
|
-
|
103
|
-
#define IN_LHASH_H
|
104
|
-
#include <openssl/lhash_macros.h>
|
105
|
-
#undef IN_LHASH_H
|
106
|
-
|
107
92
|
|
108
93
|
// lhash_item_st is an element of a hash chain. It points to the opaque data
|
109
94
|
// for this element and to the next item in the chain. The linked-list is NULL
|
@@ -119,11 +104,22 @@ typedef struct lhash_item_st {
|
|
119
104
|
// equal, to zero depending on whether |*a| is equal, or not equal to |*b|,
|
120
105
|
// respectively. Note the difference between this and |stack_cmp_func| in that
|
121
106
|
// this takes pointers to the objects directly.
|
107
|
+
//
|
108
|
+
// This function's actual type signature is int (*)(const T*, const T*). The
|
109
|
+
// low-level |lh_*| functions will be passed a type-specific wrapper to call it
|
110
|
+
// correctly.
|
122
111
|
typedef int (*lhash_cmp_func)(const void *a, const void *b);
|
112
|
+
typedef int (*lhash_cmp_func_helper)(lhash_cmp_func func, const void *a,
|
113
|
+
const void *b);
|
123
114
|
|
124
115
|
// lhash_hash_func is a function that maps an object to a uniformly distributed
|
125
116
|
// uint32_t.
|
117
|
+
//
|
118
|
+
// This function's actual type signature is uint32_t (*)(const T*). The
|
119
|
+
// low-level |lh_*| functions will be passed a type-specific wrapper to call it
|
120
|
+
// correctly.
|
126
121
|
typedef uint32_t (*lhash_hash_func)(const void *a);
|
122
|
+
typedef uint32_t (*lhash_hash_func_helper)(lhash_hash_func func, const void *a);
|
127
123
|
|
128
124
|
typedef struct lhash_st _LHASH;
|
129
125
|
|
@@ -139,22 +135,33 @@ OPENSSL_EXPORT size_t lh_num_items(const _LHASH *lh);
|
|
139
135
|
|
140
136
|
// lh_retrieve finds an element equal to |data| in the hash table and returns
|
141
137
|
// it. If no such element exists, it returns NULL.
|
142
|
-
OPENSSL_EXPORT void *lh_retrieve(const _LHASH *lh, const void *data
|
138
|
+
OPENSSL_EXPORT void *lh_retrieve(const _LHASH *lh, const void *data,
|
139
|
+
lhash_hash_func_helper call_hash_func,
|
140
|
+
lhash_cmp_func_helper call_cmp_func);
|
141
|
+
|
142
|
+
// lh_retrieve_key finds an element matching |key|, given the specified hash and
|
143
|
+
// comparison function. This differs from |lh_retrieve| in that the key may be a
|
144
|
+
// different type than the values stored in |lh|. |key_hash| and |cmp_key| must
|
145
|
+
// be compatible with the functions passed into |lh_new|.
|
146
|
+
OPENSSL_EXPORT void *lh_retrieve_key(const _LHASH *lh, const void *key,
|
147
|
+
uint32_t key_hash,
|
148
|
+
int (*cmp_key)(const void *key,
|
149
|
+
const void *value));
|
143
150
|
|
144
151
|
// lh_insert inserts |data| into the hash table. If an existing element is
|
145
152
|
// equal to |data| (with respect to the comparison function) then |*old_data|
|
146
153
|
// will be set to that value and it will be replaced. Otherwise, or in the
|
147
154
|
// event of an error, |*old_data| will be set to NULL. It returns one on
|
148
155
|
// success or zero in the case of an allocation error.
|
149
|
-
OPENSSL_EXPORT int lh_insert(_LHASH *lh, void **old_data, void *data
|
156
|
+
OPENSSL_EXPORT int lh_insert(_LHASH *lh, void **old_data, void *data,
|
157
|
+
lhash_hash_func_helper call_hash_func,
|
158
|
+
lhash_cmp_func_helper call_cmp_func);
|
150
159
|
|
151
160
|
// lh_delete removes an element equal to |data| from the hash table and returns
|
152
161
|
// it. If no such element is found, it returns NULL.
|
153
|
-
OPENSSL_EXPORT void *lh_delete(_LHASH *lh, const void *data
|
154
|
-
|
155
|
-
|
156
|
-
// TODO(fork): rename this
|
157
|
-
OPENSSL_EXPORT void lh_doall(_LHASH *lh, void (*func)(void *));
|
162
|
+
OPENSSL_EXPORT void *lh_delete(_LHASH *lh, const void *data,
|
163
|
+
lhash_hash_func_helper call_hash_func,
|
164
|
+
lhash_cmp_func_helper call_cmp_func);
|
158
165
|
|
159
166
|
// lh_doall_arg calls |func| on each element of the hash table and also passes
|
160
167
|
// |arg| as the second argument.
|
@@ -166,6 +173,107 @@ OPENSSL_EXPORT void lh_doall_arg(_LHASH *lh, void (*func)(void *, void *),
|
|
166
173
|
// strings.
|
167
174
|
OPENSSL_EXPORT uint32_t lh_strhash(const char *c);
|
168
175
|
|
176
|
+
#define DEFINE_LHASH_OF(type) \
|
177
|
+
DECLARE_LHASH_OF(type) \
|
178
|
+
\
|
179
|
+
typedef int (*lhash_##type##_cmp_func)(const type *, const type *); \
|
180
|
+
typedef uint32_t (*lhash_##type##_hash_func)(const type *); \
|
181
|
+
\
|
182
|
+
OPENSSL_INLINE int lh_##type##_call_cmp_func(lhash_cmp_func func, \
|
183
|
+
const void *a, const void *b) { \
|
184
|
+
return ((lhash_##type##_cmp_func)func)((const type *)a, (const type *)b); \
|
185
|
+
} \
|
186
|
+
\
|
187
|
+
OPENSSL_INLINE uint32_t lh_##type##_call_hash_func(lhash_hash_func func, \
|
188
|
+
const void *a) { \
|
189
|
+
return ((lhash_##type##_hash_func)func)((const type *)a); \
|
190
|
+
} \
|
191
|
+
\
|
192
|
+
OPENSSL_INLINE LHASH_OF(type) * \
|
193
|
+
lh_##type##_new(lhash_##type##_hash_func hash, \
|
194
|
+
lhash_##type##_cmp_func comp) { \
|
195
|
+
return (LHASH_OF(type) *)lh_new((lhash_hash_func)hash, \
|
196
|
+
(lhash_cmp_func)comp); \
|
197
|
+
} \
|
198
|
+
\
|
199
|
+
OPENSSL_INLINE void lh_##type##_free(LHASH_OF(type) *lh) { \
|
200
|
+
lh_free((_LHASH *)lh); \
|
201
|
+
} \
|
202
|
+
\
|
203
|
+
OPENSSL_INLINE size_t lh_##type##_num_items(const LHASH_OF(type) *lh) { \
|
204
|
+
return lh_num_items((const _LHASH *)lh); \
|
205
|
+
} \
|
206
|
+
\
|
207
|
+
OPENSSL_INLINE type *lh_##type##_retrieve(const LHASH_OF(type) *lh, \
|
208
|
+
const type *data) { \
|
209
|
+
return (type *)lh_retrieve((const _LHASH *)lh, data, \
|
210
|
+
lh_##type##_call_hash_func, \
|
211
|
+
lh_##type##_call_cmp_func); \
|
212
|
+
} \
|
213
|
+
\
|
214
|
+
typedef struct { \
|
215
|
+
int (*cmp_key)(const void *key, const type *value); \
|
216
|
+
const void *key; \
|
217
|
+
} LHASH_CMP_KEY_##type; \
|
218
|
+
\
|
219
|
+
OPENSSL_INLINE int lh_##type##_call_cmp_key(const void *key, \
|
220
|
+
const void *value) { \
|
221
|
+
const LHASH_CMP_KEY_##type *cb = (const LHASH_CMP_KEY_##type *)key; \
|
222
|
+
return cb->cmp_key(cb->key, (const type *)value); \
|
223
|
+
} \
|
224
|
+
\
|
225
|
+
OPENSSL_INLINE type *lh_##type##_retrieve_key( \
|
226
|
+
const LHASH_OF(type) *lh, const void *key, uint32_t key_hash, \
|
227
|
+
int (*cmp_key)(const void *key, const type *value)) { \
|
228
|
+
LHASH_CMP_KEY_##type cb = {cmp_key, key}; \
|
229
|
+
return (type *)lh_retrieve_key((const _LHASH *)lh, &cb, key_hash, \
|
230
|
+
lh_##type##_call_cmp_key); \
|
231
|
+
} \
|
232
|
+
\
|
233
|
+
OPENSSL_INLINE int lh_##type##_insert(LHASH_OF(type) *lh, type **old_data, \
|
234
|
+
type *data) { \
|
235
|
+
void *old_data_void = NULL; \
|
236
|
+
int ret = \
|
237
|
+
lh_insert((_LHASH *)lh, &old_data_void, data, \
|
238
|
+
lh_##type##_call_hash_func, lh_##type##_call_cmp_func); \
|
239
|
+
*old_data = (type *)old_data_void; \
|
240
|
+
return ret; \
|
241
|
+
} \
|
242
|
+
\
|
243
|
+
OPENSSL_INLINE type *lh_##type##_delete(LHASH_OF(type) *lh, \
|
244
|
+
const type *data) { \
|
245
|
+
return (type *)lh_delete((_LHASH *)lh, data, lh_##type##_call_hash_func, \
|
246
|
+
lh_##type##_call_cmp_func); \
|
247
|
+
} \
|
248
|
+
\
|
249
|
+
typedef struct { \
|
250
|
+
void (*doall)(type *); \
|
251
|
+
void (*doall_arg)(type *, void *); \
|
252
|
+
void *arg; \
|
253
|
+
} LHASH_DOALL_##type; \
|
254
|
+
\
|
255
|
+
OPENSSL_INLINE void lh_##type##_call_doall(void *value, void *arg) { \
|
256
|
+
const LHASH_DOALL_##type *cb = (const LHASH_DOALL_##type *)arg; \
|
257
|
+
cb->doall((type *)value); \
|
258
|
+
} \
|
259
|
+
\
|
260
|
+
OPENSSL_INLINE void lh_##type##_call_doall_arg(void *value, void *arg) { \
|
261
|
+
const LHASH_DOALL_##type *cb = (const LHASH_DOALL_##type *)arg; \
|
262
|
+
cb->doall_arg((type *)value, cb->arg); \
|
263
|
+
} \
|
264
|
+
\
|
265
|
+
OPENSSL_INLINE void lh_##type##_doall(LHASH_OF(type) *lh, \
|
266
|
+
void (*func)(type *)) { \
|
267
|
+
LHASH_DOALL_##type cb = {func, NULL, NULL}; \
|
268
|
+
lh_doall_arg((_LHASH *)lh, lh_##type##_call_doall, &cb); \
|
269
|
+
} \
|
270
|
+
\
|
271
|
+
OPENSSL_INLINE void lh_##type##_doall_arg( \
|
272
|
+
LHASH_OF(type) *lh, void (*func)(type *, void *), void *arg) { \
|
273
|
+
LHASH_DOALL_##type cb = {NULL, func, arg}; \
|
274
|
+
lh_doall_arg((_LHASH *)lh, lh_##type##_call_doall_arg, &cb); \
|
275
|
+
}
|
276
|
+
|
169
277
|
|
170
278
|
#if defined(__cplusplus)
|
171
279
|
} // extern C
|
@@ -79,17 +79,19 @@ OPENSSL_EXPORT int MD4_Init(MD4_CTX *md4);
|
|
79
79
|
OPENSSL_EXPORT int MD4_Update(MD4_CTX *md4, const void *data, size_t len);
|
80
80
|
|
81
81
|
// MD4_Final adds the final padding to |md4| and writes the resulting digest to
|
82
|
-
// |
|
82
|
+
// |out|, which must have at least |MD4_DIGEST_LENGTH| bytes of space. It
|
83
83
|
// returns one.
|
84
|
-
OPENSSL_EXPORT int MD4_Final(uint8_t
|
84
|
+
OPENSSL_EXPORT int MD4_Final(uint8_t out[MD4_DIGEST_LENGTH], MD4_CTX *md4);
|
85
85
|
|
86
86
|
// MD4 writes the digest of |len| bytes from |data| to |out| and returns |out|.
|
87
87
|
// There must be at least |MD4_DIGEST_LENGTH| bytes of space in |out|.
|
88
|
-
OPENSSL_EXPORT uint8_t *MD4(const uint8_t *data, size_t len,
|
88
|
+
OPENSSL_EXPORT uint8_t *MD4(const uint8_t *data, size_t len,
|
89
|
+
uint8_t out[MD4_DIGEST_LENGTH]);
|
89
90
|
|
90
91
|
// MD4_Transform is a low-level function that performs a single, MD4 block
|
91
92
|
// transformation using the state from |md4| and 64 bytes from |block|.
|
92
|
-
OPENSSL_EXPORT void MD4_Transform(MD4_CTX *md4,
|
93
|
+
OPENSSL_EXPORT void MD4_Transform(MD4_CTX *md4,
|
94
|
+
const uint8_t block[MD4_CBLOCK]);
|
93
95
|
|
94
96
|
struct md4_state_st {
|
95
97
|
uint32_t h[4];
|
@@ -80,17 +80,19 @@ OPENSSL_EXPORT int MD5_Init(MD5_CTX *md5);
|
|
80
80
|
OPENSSL_EXPORT int MD5_Update(MD5_CTX *md5, const void *data, size_t len);
|
81
81
|
|
82
82
|
// MD5_Final adds the final padding to |md5| and writes the resulting digest to
|
83
|
-
// |
|
83
|
+
// |out|, which must have at least |MD5_DIGEST_LENGTH| bytes of space. It
|
84
84
|
// returns one.
|
85
|
-
OPENSSL_EXPORT int MD5_Final(uint8_t
|
85
|
+
OPENSSL_EXPORT int MD5_Final(uint8_t out[MD5_DIGEST_LENGTH], MD5_CTX *md5);
|
86
86
|
|
87
87
|
// MD5 writes the digest of |len| bytes from |data| to |out| and returns |out|.
|
88
88
|
// There must be at least |MD5_DIGEST_LENGTH| bytes of space in |out|.
|
89
|
-
OPENSSL_EXPORT uint8_t *MD5(const uint8_t *data, size_t len,
|
89
|
+
OPENSSL_EXPORT uint8_t *MD5(const uint8_t *data, size_t len,
|
90
|
+
uint8_t out[MD5_DIGEST_LENGTH]);
|
90
91
|
|
91
92
|
// MD5_Transform is a low-level function that performs a single, MD5 block
|
92
93
|
// transformation using the state from |md5| and 64 bytes from |block|.
|
93
|
-
OPENSSL_EXPORT void MD5_Transform(MD5_CTX *md5,
|
94
|
+
OPENSSL_EXPORT void MD5_Transform(MD5_CTX *md5,
|
95
|
+
const uint8_t block[MD5_CBLOCK]);
|
94
96
|
|
95
97
|
struct md5_state_st {
|
96
98
|
uint32_t h[4];
|
@@ -136,18 +136,22 @@ OPENSSL_EXPORT int BIO_vsnprintf(char *buf, size_t n, const char *format,
|
|
136
136
|
#define CRYPTO_realloc OPENSSL_realloc
|
137
137
|
#define CRYPTO_free OPENSSL_free
|
138
138
|
|
139
|
+
// OPENSSL_clear_free calls |OPENSSL_free|. BoringSSL automatically clears all
|
140
|
+
// allocations on free, but we define |OPENSSL_clear_free| for compatibility.
|
141
|
+
OPENSSL_EXPORT void OPENSSL_clear_free(void *ptr, size_t len);
|
142
|
+
|
139
143
|
|
140
144
|
#if defined(__cplusplus)
|
141
145
|
} // extern C
|
142
146
|
|
143
147
|
extern "C++" {
|
144
148
|
|
145
|
-
|
149
|
+
BSSL_NAMESPACE_BEGIN
|
146
150
|
|
147
151
|
BORINGSSL_MAKE_DELETER(char, OPENSSL_free)
|
148
152
|
BORINGSSL_MAKE_DELETER(uint8_t, OPENSSL_free)
|
149
153
|
|
150
|
-
|
154
|
+
BSSL_NAMESPACE_END
|
151
155
|
|
152
156
|
} // extern C++
|
153
157
|
|
@@ -63,6 +63,7 @@
|
|
63
63
|
#include <openssl/digest.h>
|
64
64
|
#include <openssl/evp.h>
|
65
65
|
#include <openssl/stack.h>
|
66
|
+
#include <openssl/pkcs7.h>
|
66
67
|
#include <openssl/x509.h>
|
67
68
|
|
68
69
|
/* For compatibility with open-iscsi, which assumes that it can get
|
@@ -122,73 +123,109 @@ extern "C" {
|
|
122
123
|
|
123
124
|
#else
|
124
125
|
|
125
|
-
#define IMPLEMENT_PEM_read_fp(name, type, str, asn1)
|
126
|
-
|
127
|
-
{
|
128
|
-
return
|
129
|
-
}
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
126
|
+
#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
|
127
|
+
static void *pem_read_##name##_d2i(void **x, const unsigned char **inp, \
|
128
|
+
long len) { \
|
129
|
+
return d2i_##asn1((type **)x, inp, len); \
|
130
|
+
} \
|
131
|
+
OPENSSL_EXPORT type *PEM_read_##name(FILE *fp, type **x, \
|
132
|
+
pem_password_cb *cb, void *u) { \
|
133
|
+
return (type *)PEM_ASN1_read(pem_read_##name##_d2i, str, fp, (void **)x, \
|
134
|
+
cb, u); \
|
135
|
+
}
|
136
|
+
|
137
|
+
#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
|
138
|
+
static int pem_write_##name##_i2d(const void *x, unsigned char **outp) { \
|
139
|
+
return i2d_##asn1((type *)x, outp); \
|
140
|
+
} \
|
141
|
+
OPENSSL_EXPORT int PEM_write_##name(FILE *fp, type *x) { \
|
142
|
+
return PEM_ASN1_write(pem_write_##name##_i2d, str, fp, x, NULL, NULL, 0, \
|
143
|
+
NULL, NULL); \
|
144
|
+
}
|
145
|
+
|
146
|
+
#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
|
147
|
+
static int pem_write_##name##_i2d(const void *x, unsigned char **outp) { \
|
148
|
+
return i2d_##asn1((const type *)x, outp); \
|
149
|
+
} \
|
150
|
+
OPENSSL_EXPORT int PEM_write_##name(FILE *fp, const type *x) { \
|
151
|
+
return PEM_ASN1_write(pem_write_##name##_i2d, str, fp, (void *)x, NULL, \
|
152
|
+
NULL, 0, NULL, NULL); \
|
153
|
+
}
|
154
|
+
|
155
|
+
#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
|
156
|
+
static int pem_write_##name##_i2d(const void *x, unsigned char **outp) { \
|
157
|
+
return i2d_##asn1((type *)x, outp); \
|
158
|
+
} \
|
159
|
+
OPENSSL_EXPORT int PEM_write_##name( \
|
160
|
+
FILE *fp, type *x, const EVP_CIPHER *enc, unsigned char *kstr, int klen, \
|
161
|
+
pem_password_cb *cb, void *u) { \
|
162
|
+
return PEM_ASN1_write(pem_write_##name##_i2d, str, fp, x, enc, kstr, klen, \
|
163
|
+
cb, u); \
|
164
|
+
}
|
165
|
+
|
166
|
+
#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
|
167
|
+
static int pem_write_##name##_i2d(const void *x, unsigned char **outp) { \
|
168
|
+
return i2d_##asn1((const type *)x, outp); \
|
169
|
+
} \
|
170
|
+
OPENSSL_EXPORT int PEM_write_##name( \
|
171
|
+
FILE *fp, type *x, const EVP_CIPHER *enc, unsigned char *kstr, int klen, \
|
172
|
+
pem_password_cb *cb, void *u) { \
|
173
|
+
return PEM_ASN1_write(pem_write_##name##_i2d, str, fp, x, enc, kstr, klen, \
|
174
|
+
cb, u); \
|
175
|
+
}
|
158
176
|
|
159
177
|
#endif
|
160
178
|
|
161
|
-
#define IMPLEMENT_PEM_read_bio(name, type, str, asn1)
|
162
|
-
|
163
|
-
{
|
164
|
-
return
|
165
|
-
}
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
179
|
+
#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
|
180
|
+
static void *pem_read_bio_##name##_d2i(void **x, const unsigned char **inp, \
|
181
|
+
long len) { \
|
182
|
+
return d2i_##asn1((type **)x, inp, len); \
|
183
|
+
} \
|
184
|
+
OPENSSL_EXPORT type *PEM_read_bio_##name(BIO *bp, type **x, \
|
185
|
+
pem_password_cb *cb, void *u) { \
|
186
|
+
return (type *)PEM_ASN1_read_bio(pem_read_bio_##name##_d2i, str, bp, \
|
187
|
+
(void **)x, cb, u); \
|
188
|
+
}
|
189
|
+
|
190
|
+
#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
|
191
|
+
static int pem_write_bio_##name##_i2d(const void *x, unsigned char **outp) { \
|
192
|
+
return i2d_##asn1((type *)x, outp); \
|
193
|
+
} \
|
194
|
+
OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, type *x) { \
|
195
|
+
return PEM_ASN1_write_bio(pem_write_bio_##name##_i2d, str, bp, x, NULL, \
|
196
|
+
NULL, 0, NULL, NULL); \
|
197
|
+
}
|
198
|
+
|
199
|
+
#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
|
200
|
+
static int pem_write_bio_##name##_i2d(const void *x, unsigned char **outp) { \
|
201
|
+
return i2d_##asn1((const type *)x, outp); \
|
202
|
+
} \
|
203
|
+
OPENSSL_EXPORT int PEM_write_bio_##name(BIO *bp, const type *x) { \
|
204
|
+
return PEM_ASN1_write_bio(pem_write_bio_##name##_i2d, str, bp, (void *)x, \
|
205
|
+
NULL, NULL, 0, NULL, NULL); \
|
206
|
+
}
|
207
|
+
|
208
|
+
#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
|
209
|
+
static int pem_write_bio_##name##_i2d(const void *x, unsigned char **outp) { \
|
210
|
+
return i2d_##asn1((type *)x, outp); \
|
211
|
+
} \
|
212
|
+
OPENSSL_EXPORT int PEM_write_bio_##name( \
|
213
|
+
BIO *bp, type *x, const EVP_CIPHER *enc, unsigned char *kstr, int klen, \
|
214
|
+
pem_password_cb *cb, void *u) { \
|
215
|
+
return PEM_ASN1_write_bio(pem_write_bio_##name##_i2d, str, bp, x, enc, \
|
216
|
+
kstr, klen, cb, u); \
|
217
|
+
}
|
218
|
+
|
219
|
+
#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
|
220
|
+
static int pem_write_bio_##name##_i2d(const void *x, unsigned char **outp) { \
|
221
|
+
return i2d_##asn1((const type *)x, outp); \
|
222
|
+
} \
|
223
|
+
OPENSSL_EXPORT int PEM_write_bio_##name( \
|
224
|
+
BIO *bp, type *x, const EVP_CIPHER *enc, unsigned char *kstr, int klen, \
|
225
|
+
pem_password_cb *cb, void *u) { \
|
226
|
+
return PEM_ASN1_write_bio(pem_write_bio_##name##_i2d, str, bp, (void *)x, \
|
227
|
+
enc, kstr, klen, cb, u); \
|
228
|
+
}
|
192
229
|
|
193
230
|
#define IMPLEMENT_PEM_write(name, type, str, asn1) \
|
194
231
|
IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
|
@@ -329,6 +366,7 @@ DECLARE_PEM_write(X509_REQ_NEW, X509_REQ)
|
|
329
366
|
|
330
367
|
DECLARE_PEM_rw(X509_CRL, X509_CRL)
|
331
368
|
|
369
|
+
DECLARE_PEM_rw(PKCS7, PKCS7)
|
332
370
|
DECLARE_PEM_rw(PKCS8, X509_SIG)
|
333
371
|
|
334
372
|
DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
|