grpc 1.28.0 → 1.30.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 +7694 -11190
- data/include/grpc/grpc.h +2 -2
- data/include/grpc/grpc_security.h +22 -9
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/grpc_types.h +19 -21
- data/include/grpc/impl/codegen/port_platform.h +6 -2
- data/include/grpc/module.modulemap +24 -39
- data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +203 -236
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
- data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
- data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
- data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
- data/src/core/ext/filters/client_channel/resolver.cc +5 -8
- data/src/core/ext/filters/client_channel/resolver.h +12 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
- 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 +72 -117
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
- data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
- data/src/core/ext/filters/client_channel/server_address.cc +6 -9
- data/src/core/ext/filters/client_channel/server_address.h +6 -12
- data/src/core/ext/filters/client_channel/service_config.cc +104 -144
- data/src/core/ext/filters/client_channel/service_config.h +28 -98
- data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
- data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
- data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
- data/src/core/ext/filters/client_channel/subchannel.h +35 -11
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
- data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
- data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
- data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
- data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
- data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
- data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
- data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
- data/src/core/lib/channel/channel_args.cc +15 -14
- data/src/core/lib/channel/channel_args.h +3 -1
- data/src/core/lib/channel/channel_stack.h +20 -13
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +3 -2
- data/src/core/lib/channel/channelz_registry.cc +5 -3
- data/src/core/lib/channel/connected_channel.cc +7 -5
- data/src/core/lib/channel/context.h +1 -1
- data/src/core/lib/channel/handshaker.cc +11 -13
- data/src/core/lib/channel/handshaker.h +4 -2
- data/src/core/lib/channel/handshaker_registry.cc +5 -17
- data/src/core/lib/channel/status_util.cc +2 -3
- data/src/core/lib/compression/message_compress.cc +5 -1
- data/src/core/lib/debug/stats.cc +21 -27
- data/src/core/lib/debug/stats.h +3 -1
- data/src/core/lib/gpr/spinlock.h +2 -3
- data/src/core/lib/gpr/string.cc +2 -26
- data/src/core/lib/gpr/string.h +0 -16
- data/src/core/lib/gpr/sync_abseil.cc +2 -0
- data/src/core/lib/gpr/time.cc +4 -0
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gprpp/atomic.h +6 -6
- data/src/core/lib/gprpp/fork.cc +1 -1
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/map.h +5 -11
- data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
- data/src/core/lib/http/format_request.cc +46 -65
- data/src/core/lib/http/httpcli.cc +2 -3
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/http/parser.h +2 -3
- data/src/core/lib/iomgr/buffer_list.h +22 -21
- data/src/core/lib/iomgr/call_combiner.h +3 -2
- data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
- data/src/core/lib/iomgr/closure.h +2 -3
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
- data/src/core/lib/iomgr/endpoint_pair.h +2 -3
- data/src/core/lib/iomgr/error.cc +6 -9
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +356 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
- data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
- data/src/core/lib/iomgr/ev_posix.cc +2 -3
- data/src/core/lib/iomgr/exec_ctx.h +14 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
- data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
- data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
- data/src/core/lib/iomgr/port.h +1 -0
- data/src/core/lib/iomgr/python_util.h +46 -0
- data/src/core/lib/iomgr/resolve_address.h +4 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
- data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
- data/src/core/lib/iomgr/resource_quota.cc +4 -6
- data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
- data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
- data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
- data/src/core/lib/iomgr/socket_mutator.h +2 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
- data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_custom.cc +2 -3
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
- data/src/core/lib/iomgr/tcp_uv.cc +3 -2
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer_generic.cc +2 -3
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/udp_server.cc +9 -14
- data/src/core/lib/json/json.h +3 -2
- data/src/core/lib/json/json_reader.cc +5 -5
- data/src/core/lib/json/json_writer.cc +13 -12
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
- data/src/core/lib/security/credentials/credentials.cc +0 -84
- data/src/core/lib/security/credentials/credentials.h +8 -59
- data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
- data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
- data/src/core/lib/slice/slice_intern.cc +2 -3
- data/src/core/lib/slice/slice_internal.h +14 -0
- data/src/core/lib/slice/slice_utils.h +9 -0
- data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
- data/src/core/lib/surface/call.cc +2 -3
- data/src/core/lib/surface/call_log_batch.cc +50 -58
- data/src/core/lib/surface/channel.cc +53 -31
- data/src/core/lib/surface/channel.h +35 -4
- data/src/core/lib/surface/channel_ping.cc +2 -3
- data/src/core/lib/surface/completion_queue.cc +33 -33
- data/src/core/lib/surface/event_string.cc +18 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init_secure.cc +1 -4
- data/src/core/lib/surface/server.cc +570 -369
- data/src/core/lib/surface/server.h +32 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/byte_stream.h +7 -2
- data/src/core/lib/transport/connectivity_state.cc +7 -6
- data/src/core/lib/transport/connectivity_state.h +5 -3
- data/src/core/lib/transport/metadata.cc +3 -3
- data/src/core/lib/transport/metadata_batch.h +2 -3
- data/src/core/lib/transport/static_metadata.h +1 -1
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/transport.cc +2 -3
- data/src/core/lib/transport/transport.h +3 -2
- data/src/core/lib/transport/transport_op_string.cc +61 -102
- data/src/core/lib/uri/uri_parser.h +2 -3
- data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
- data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/fake_transport_security.cc +10 -15
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
- data/src/core/tsi/ssl_transport_security.cc +52 -39
- data/src/core/tsi/ssl_transport_security.h +8 -8
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.h +6 -9
- data/src/core/tsi/transport_security_grpc.h +2 -3
- data/src/core/tsi/transport_security_interface.h +3 -3
- data/src/ruby/ext/grpc/rb_call.c +9 -1
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
- data/third_party/abseil-cpp/absl/time/format.cc +153 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +499 -0
- data/third_party/abseil-cpp/absl/time/time.h +1584 -0
- data/third_party/boringssl-with-bazel/err_data.c +329 -297
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- metadata +111 -37
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -67,62 +67,100 @@
|
|
67
67
|
|
68
68
|
BSSL_NAMESPACE_BEGIN
|
69
69
|
|
70
|
-
static void
|
70
|
+
static void tls_on_handshake_complete(SSL *ssl) {
|
71
71
|
// The handshake should have released its final message.
|
72
72
|
assert(!ssl->s3->has_message);
|
73
73
|
|
74
74
|
// During the handshake, |hs_buf| is retained. Release if it there is no
|
75
|
-
// excess in it. There
|
76
|
-
//
|
77
|
-
//
|
78
|
-
//
|
75
|
+
// excess in it. There should not be any excess because the handshake logic
|
76
|
+
// rejects unprocessed data after each Finished message. Note this means we do
|
77
|
+
// not allow a TLS 1.2 HelloRequest to be packed into the same record as
|
78
|
+
// Finished. (Schannel also rejects this.)
|
79
|
+
assert(!ssl->s3->hs_buf || ssl->s3->hs_buf->length == 0);
|
79
80
|
if (ssl->s3->hs_buf && ssl->s3->hs_buf->length == 0) {
|
80
81
|
ssl->s3->hs_buf.reset();
|
81
82
|
}
|
82
83
|
}
|
83
84
|
|
84
|
-
static bool
|
85
|
+
static bool tls_set_read_state(SSL *ssl, ssl_encryption_level_t level,
|
86
|
+
UniquePtr<SSLAEADContext> aead_ctx,
|
87
|
+
Span<const uint8_t> secret_for_quic) {
|
85
88
|
// Cipher changes are forbidden if the current epoch has leftover data.
|
86
89
|
if (tls_has_unprocessed_handshake_data(ssl)) {
|
87
|
-
OPENSSL_PUT_ERROR(SSL,
|
90
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESS_HANDSHAKE_DATA);
|
88
91
|
ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
|
89
92
|
return false;
|
90
93
|
}
|
91
94
|
|
95
|
+
if (ssl->quic_method != nullptr) {
|
96
|
+
if (!ssl->quic_method->set_read_secret(ssl, level, aead_ctx->cipher(),
|
97
|
+
secret_for_quic.data(),
|
98
|
+
secret_for_quic.size())) {
|
99
|
+
return false;
|
100
|
+
}
|
101
|
+
|
102
|
+
// QUIC only uses |ssl| for handshake messages, which never use early data
|
103
|
+
// keys, so we return without installing anything. This avoids needing to
|
104
|
+
// have two secrets active at once in 0-RTT.
|
105
|
+
if (level == ssl_encryption_early_data) {
|
106
|
+
return true;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
92
110
|
OPENSSL_memset(ssl->s3->read_sequence, 0, sizeof(ssl->s3->read_sequence));
|
93
111
|
ssl->s3->aead_read_ctx = std::move(aead_ctx);
|
112
|
+
ssl->s3->read_level = level;
|
94
113
|
return true;
|
95
114
|
}
|
96
115
|
|
97
|
-
static bool
|
116
|
+
static bool tls_set_write_state(SSL *ssl, ssl_encryption_level_t level,
|
117
|
+
UniquePtr<SSLAEADContext> aead_ctx,
|
118
|
+
Span<const uint8_t> secret_for_quic) {
|
98
119
|
if (!tls_flush_pending_hs_data(ssl)) {
|
99
120
|
return false;
|
100
121
|
}
|
101
122
|
|
123
|
+
if (ssl->quic_method != nullptr) {
|
124
|
+
if (!ssl->quic_method->set_write_secret(ssl, level, aead_ctx->cipher(),
|
125
|
+
secret_for_quic.data(),
|
126
|
+
secret_for_quic.size())) {
|
127
|
+
return false;
|
128
|
+
}
|
129
|
+
|
130
|
+
// QUIC only uses |ssl| for handshake messages, which never use early data
|
131
|
+
// keys, so we return without installing anything. This avoids needing to
|
132
|
+
// have two secrets active at once in 0-RTT.
|
133
|
+
if (level == ssl_encryption_early_data) {
|
134
|
+
return true;
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
102
138
|
OPENSSL_memset(ssl->s3->write_sequence, 0, sizeof(ssl->s3->write_sequence));
|
103
139
|
ssl->s3->aead_write_ctx = std::move(aead_ctx);
|
140
|
+
ssl->s3->write_level = level;
|
104
141
|
return true;
|
105
142
|
}
|
106
143
|
|
107
144
|
static const SSL_PROTOCOL_METHOD kTLSProtocolMethod = {
|
108
145
|
false /* is_dtls */,
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
146
|
+
tls_new,
|
147
|
+
tls_free,
|
148
|
+
tls_get_message,
|
149
|
+
tls_next_message,
|
150
|
+
tls_has_unprocessed_handshake_data,
|
151
|
+
tls_open_handshake,
|
152
|
+
tls_open_change_cipher_spec,
|
153
|
+
tls_open_app_data,
|
154
|
+
tls_write_app_data,
|
155
|
+
tls_dispatch_alert,
|
156
|
+
tls_init_message,
|
157
|
+
tls_finish_message,
|
158
|
+
tls_add_message,
|
159
|
+
tls_add_change_cipher_spec,
|
160
|
+
tls_flush_flight,
|
161
|
+
tls_on_handshake_complete,
|
162
|
+
tls_set_read_state,
|
163
|
+
tls_set_write_state,
|
126
164
|
};
|
127
165
|
|
128
166
|
static bool ssl_noop_x509_check_client_CA_names(
|
@@ -1,17 +1,28 @@
|
|
1
|
-
/* Autogenerated */
|
1
|
+
/* Autogenerated: src/ExtractionOCaml/unsaturated_solinas --static 25519 10 '2^255 - 19' 32 carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes carry_scmul121666 */
|
2
2
|
/* curve description: 25519 */
|
3
|
-
/* requested operations: carry_mul, carry_square,
|
3
|
+
/* requested operations: carry_mul, carry_square, carry, add, sub, opp, selectznz, to_bytes, from_bytes, carry_scmul121666 */
|
4
4
|
/* n = 10 (from "10") */
|
5
|
-
/* s =
|
6
|
-
/* c = [(1, 19)] (from "1,19") */
|
5
|
+
/* s-c = 2^255 - [(1, 19)] (from "2^255 - 19") */
|
7
6
|
/* machine_wordsize = 32 (from "32") */
|
8
7
|
|
8
|
+
/* Computed values: */
|
9
|
+
/* carry_chain = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1] */
|
10
|
+
|
9
11
|
#include <stdint.h>
|
10
12
|
typedef unsigned char fiat_25519_uint1;
|
11
13
|
typedef signed char fiat_25519_int1;
|
12
14
|
|
15
|
+
#if (-1 & 3) != 3
|
16
|
+
#error "This code only works on a two's complement system"
|
17
|
+
#endif
|
18
|
+
|
13
19
|
|
14
20
|
/*
|
21
|
+
* The function fiat_25519_addcarryx_u26 is an addition with carry.
|
22
|
+
* Postconditions:
|
23
|
+
* out1 = (arg1 + arg2 + arg3) mod 2^26
|
24
|
+
* out2 = ⌊(arg1 + arg2 + arg3) / 2^26⌋
|
25
|
+
*
|
15
26
|
* Input Bounds:
|
16
27
|
* arg1: [0x0 ~> 0x1]
|
17
28
|
* arg2: [0x0 ~> 0x3ffffff]
|
@@ -29,6 +40,11 @@ static void fiat_25519_addcarryx_u26(uint32_t* out1, fiat_25519_uint1* out2, fia
|
|
29
40
|
}
|
30
41
|
|
31
42
|
/*
|
43
|
+
* The function fiat_25519_subborrowx_u26 is a subtraction with borrow.
|
44
|
+
* Postconditions:
|
45
|
+
* out1 = (-arg1 + arg2 + -arg3) mod 2^26
|
46
|
+
* out2 = -⌊(-arg1 + arg2 + -arg3) / 2^26⌋
|
47
|
+
*
|
32
48
|
* Input Bounds:
|
33
49
|
* arg1: [0x0 ~> 0x1]
|
34
50
|
* arg2: [0x0 ~> 0x3ffffff]
|
@@ -46,6 +62,11 @@ static void fiat_25519_subborrowx_u26(uint32_t* out1, fiat_25519_uint1* out2, fi
|
|
46
62
|
}
|
47
63
|
|
48
64
|
/*
|
65
|
+
* The function fiat_25519_addcarryx_u25 is an addition with carry.
|
66
|
+
* Postconditions:
|
67
|
+
* out1 = (arg1 + arg2 + arg3) mod 2^25
|
68
|
+
* out2 = ⌊(arg1 + arg2 + arg3) / 2^25⌋
|
69
|
+
*
|
49
70
|
* Input Bounds:
|
50
71
|
* arg1: [0x0 ~> 0x1]
|
51
72
|
* arg2: [0x0 ~> 0x1ffffff]
|
@@ -63,6 +84,11 @@ static void fiat_25519_addcarryx_u25(uint32_t* out1, fiat_25519_uint1* out2, fia
|
|
63
84
|
}
|
64
85
|
|
65
86
|
/*
|
87
|
+
* The function fiat_25519_subborrowx_u25 is a subtraction with borrow.
|
88
|
+
* Postconditions:
|
89
|
+
* out1 = (-arg1 + arg2 + -arg3) mod 2^25
|
90
|
+
* out2 = -⌊(-arg1 + arg2 + -arg3) / 2^25⌋
|
91
|
+
*
|
66
92
|
* Input Bounds:
|
67
93
|
* arg1: [0x0 ~> 0x1]
|
68
94
|
* arg2: [0x0 ~> 0x1ffffff]
|
@@ -80,6 +106,10 @@ static void fiat_25519_subborrowx_u25(uint32_t* out1, fiat_25519_uint1* out2, fi
|
|
80
106
|
}
|
81
107
|
|
82
108
|
/*
|
109
|
+
* The function fiat_25519_cmovznz_u32 is a single-word conditional move.
|
110
|
+
* Postconditions:
|
111
|
+
* out1 = (if arg1 = 0 then arg2 else arg3)
|
112
|
+
*
|
83
113
|
* Input Bounds:
|
84
114
|
* arg1: [0x0 ~> 0x1]
|
85
115
|
* arg2: [0x0 ~> 0xffffffff]
|
@@ -101,6 +131,10 @@ static void fiat_25519_cmovznz_u32(uint32_t* out1, fiat_25519_uint1 arg1, uint32
|
|
101
131
|
}
|
102
132
|
|
103
133
|
/*
|
134
|
+
* The function fiat_25519_carry_mul multiplies two field elements and reduces the result.
|
135
|
+
* Postconditions:
|
136
|
+
* eval out1 mod m = (eval arg1 * eval arg2) mod m
|
137
|
+
*
|
104
138
|
* Input Bounds:
|
105
139
|
* arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]]
|
106
140
|
* arg2: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]]
|
@@ -108,65 +142,65 @@ static void fiat_25519_cmovznz_u32(uint32_t* out1, fiat_25519_uint1 arg1, uint32
|
|
108
142
|
* out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
109
143
|
*/
|
110
144
|
static void fiat_25519_carry_mul(uint32_t out1[10], const uint32_t arg1[10], const uint32_t arg2[10]) {
|
111
|
-
uint64_t x1 = ((uint64_t)(arg1[9]) * ((arg2[9]) *
|
112
|
-
uint64_t x2 = ((uint64_t)(arg1[9]) * ((arg2[8]) *
|
113
|
-
uint64_t x3 = ((uint64_t)(arg1[9]) * ((arg2[7]) *
|
114
|
-
uint64_t x4 = ((uint64_t)(arg1[9]) * ((arg2[6]) *
|
115
|
-
uint64_t x5 = ((uint64_t)(arg1[9]) * ((arg2[5]) *
|
116
|
-
uint64_t x6 = ((uint64_t)(arg1[9]) * ((arg2[4]) *
|
117
|
-
uint64_t x7 = ((uint64_t)(arg1[9]) * ((arg2[3]) *
|
118
|
-
uint64_t x8 = ((uint64_t)(arg1[9]) * ((arg2[2]) *
|
119
|
-
uint64_t x9 = ((uint64_t)(arg1[9]) * ((arg2[1]) *
|
120
|
-
uint64_t x10 = ((uint64_t)(arg1[8]) * ((arg2[9]) *
|
121
|
-
uint64_t x11 = ((uint64_t)(arg1[8]) * ((arg2[8]) *
|
122
|
-
uint64_t x12 = ((uint64_t)(arg1[8]) * ((arg2[7]) *
|
123
|
-
uint64_t x13 = ((uint64_t)(arg1[8]) * ((arg2[6]) *
|
124
|
-
uint64_t x14 = ((uint64_t)(arg1[8]) * ((arg2[5]) *
|
125
|
-
uint64_t x15 = ((uint64_t)(arg1[8]) * ((arg2[4]) *
|
126
|
-
uint64_t x16 = ((uint64_t)(arg1[8]) * ((arg2[3]) *
|
127
|
-
uint64_t x17 = ((uint64_t)(arg1[8]) * ((arg2[2]) *
|
128
|
-
uint64_t x18 = ((uint64_t)(arg1[7]) * ((arg2[9]) *
|
129
|
-
uint64_t x19 = ((uint64_t)(arg1[7]) * ((arg2[8]) *
|
130
|
-
uint64_t x20 = ((uint64_t)(arg1[7]) * ((arg2[7]) *
|
131
|
-
uint64_t x21 = ((uint64_t)(arg1[7]) * ((arg2[6]) *
|
132
|
-
uint64_t x22 = ((uint64_t)(arg1[7]) * ((arg2[5]) *
|
133
|
-
uint64_t x23 = ((uint64_t)(arg1[7]) * ((arg2[4]) *
|
134
|
-
uint64_t x24 = ((uint64_t)(arg1[7]) * ((arg2[3]) *
|
135
|
-
uint64_t x25 = ((uint64_t)(arg1[6]) * ((arg2[9]) *
|
136
|
-
uint64_t x26 = ((uint64_t)(arg1[6]) * ((arg2[8]) *
|
137
|
-
uint64_t x27 = ((uint64_t)(arg1[6]) * ((arg2[7]) *
|
138
|
-
uint64_t x28 = ((uint64_t)(arg1[6]) * ((arg2[6]) *
|
139
|
-
uint64_t x29 = ((uint64_t)(arg1[6]) * ((arg2[5]) *
|
140
|
-
uint64_t x30 = ((uint64_t)(arg1[6]) * ((arg2[4]) *
|
141
|
-
uint64_t x31 = ((uint64_t)(arg1[5]) * ((arg2[9]) *
|
142
|
-
uint64_t x32 = ((uint64_t)(arg1[5]) * ((arg2[8]) *
|
143
|
-
uint64_t x33 = ((uint64_t)(arg1[5]) * ((arg2[7]) *
|
144
|
-
uint64_t x34 = ((uint64_t)(arg1[5]) * ((arg2[6]) *
|
145
|
-
uint64_t x35 = ((uint64_t)(arg1[5]) * ((arg2[5]) *
|
146
|
-
uint64_t x36 = ((uint64_t)(arg1[4]) * ((arg2[9]) *
|
147
|
-
uint64_t x37 = ((uint64_t)(arg1[4]) * ((arg2[8]) *
|
148
|
-
uint64_t x38 = ((uint64_t)(arg1[4]) * ((arg2[7]) *
|
149
|
-
uint64_t x39 = ((uint64_t)(arg1[4]) * ((arg2[6]) *
|
150
|
-
uint64_t x40 = ((uint64_t)(arg1[3]) * ((arg2[9]) *
|
151
|
-
uint64_t x41 = ((uint64_t)(arg1[3]) * ((arg2[8]) *
|
152
|
-
uint64_t x42 = ((uint64_t)(arg1[3]) * ((arg2[7]) *
|
153
|
-
uint64_t x43 = ((uint64_t)(arg1[2]) * ((arg2[9]) *
|
154
|
-
uint64_t x44 = ((uint64_t)(arg1[2]) * ((arg2[8]) *
|
155
|
-
uint64_t x45 = ((uint64_t)(arg1[1]) * ((arg2[9]) *
|
145
|
+
uint64_t x1 = ((uint64_t)(arg1[9]) * ((arg2[9]) * UINT8_C(0x26)));
|
146
|
+
uint64_t x2 = ((uint64_t)(arg1[9]) * ((arg2[8]) * UINT8_C(0x13)));
|
147
|
+
uint64_t x3 = ((uint64_t)(arg1[9]) * ((arg2[7]) * UINT8_C(0x26)));
|
148
|
+
uint64_t x4 = ((uint64_t)(arg1[9]) * ((arg2[6]) * UINT8_C(0x13)));
|
149
|
+
uint64_t x5 = ((uint64_t)(arg1[9]) * ((arg2[5]) * UINT8_C(0x26)));
|
150
|
+
uint64_t x6 = ((uint64_t)(arg1[9]) * ((arg2[4]) * UINT8_C(0x13)));
|
151
|
+
uint64_t x7 = ((uint64_t)(arg1[9]) * ((arg2[3]) * UINT8_C(0x26)));
|
152
|
+
uint64_t x8 = ((uint64_t)(arg1[9]) * ((arg2[2]) * UINT8_C(0x13)));
|
153
|
+
uint64_t x9 = ((uint64_t)(arg1[9]) * ((arg2[1]) * UINT8_C(0x26)));
|
154
|
+
uint64_t x10 = ((uint64_t)(arg1[8]) * ((arg2[9]) * UINT8_C(0x13)));
|
155
|
+
uint64_t x11 = ((uint64_t)(arg1[8]) * ((arg2[8]) * UINT8_C(0x13)));
|
156
|
+
uint64_t x12 = ((uint64_t)(arg1[8]) * ((arg2[7]) * UINT8_C(0x13)));
|
157
|
+
uint64_t x13 = ((uint64_t)(arg1[8]) * ((arg2[6]) * UINT8_C(0x13)));
|
158
|
+
uint64_t x14 = ((uint64_t)(arg1[8]) * ((arg2[5]) * UINT8_C(0x13)));
|
159
|
+
uint64_t x15 = ((uint64_t)(arg1[8]) * ((arg2[4]) * UINT8_C(0x13)));
|
160
|
+
uint64_t x16 = ((uint64_t)(arg1[8]) * ((arg2[3]) * UINT8_C(0x13)));
|
161
|
+
uint64_t x17 = ((uint64_t)(arg1[8]) * ((arg2[2]) * UINT8_C(0x13)));
|
162
|
+
uint64_t x18 = ((uint64_t)(arg1[7]) * ((arg2[9]) * UINT8_C(0x26)));
|
163
|
+
uint64_t x19 = ((uint64_t)(arg1[7]) * ((arg2[8]) * UINT8_C(0x13)));
|
164
|
+
uint64_t x20 = ((uint64_t)(arg1[7]) * ((arg2[7]) * UINT8_C(0x26)));
|
165
|
+
uint64_t x21 = ((uint64_t)(arg1[7]) * ((arg2[6]) * UINT8_C(0x13)));
|
166
|
+
uint64_t x22 = ((uint64_t)(arg1[7]) * ((arg2[5]) * UINT8_C(0x26)));
|
167
|
+
uint64_t x23 = ((uint64_t)(arg1[7]) * ((arg2[4]) * UINT8_C(0x13)));
|
168
|
+
uint64_t x24 = ((uint64_t)(arg1[7]) * ((arg2[3]) * UINT8_C(0x26)));
|
169
|
+
uint64_t x25 = ((uint64_t)(arg1[6]) * ((arg2[9]) * UINT8_C(0x13)));
|
170
|
+
uint64_t x26 = ((uint64_t)(arg1[6]) * ((arg2[8]) * UINT8_C(0x13)));
|
171
|
+
uint64_t x27 = ((uint64_t)(arg1[6]) * ((arg2[7]) * UINT8_C(0x13)));
|
172
|
+
uint64_t x28 = ((uint64_t)(arg1[6]) * ((arg2[6]) * UINT8_C(0x13)));
|
173
|
+
uint64_t x29 = ((uint64_t)(arg1[6]) * ((arg2[5]) * UINT8_C(0x13)));
|
174
|
+
uint64_t x30 = ((uint64_t)(arg1[6]) * ((arg2[4]) * UINT8_C(0x13)));
|
175
|
+
uint64_t x31 = ((uint64_t)(arg1[5]) * ((arg2[9]) * UINT8_C(0x26)));
|
176
|
+
uint64_t x32 = ((uint64_t)(arg1[5]) * ((arg2[8]) * UINT8_C(0x13)));
|
177
|
+
uint64_t x33 = ((uint64_t)(arg1[5]) * ((arg2[7]) * UINT8_C(0x26)));
|
178
|
+
uint64_t x34 = ((uint64_t)(arg1[5]) * ((arg2[6]) * UINT8_C(0x13)));
|
179
|
+
uint64_t x35 = ((uint64_t)(arg1[5]) * ((arg2[5]) * UINT8_C(0x26)));
|
180
|
+
uint64_t x36 = ((uint64_t)(arg1[4]) * ((arg2[9]) * UINT8_C(0x13)));
|
181
|
+
uint64_t x37 = ((uint64_t)(arg1[4]) * ((arg2[8]) * UINT8_C(0x13)));
|
182
|
+
uint64_t x38 = ((uint64_t)(arg1[4]) * ((arg2[7]) * UINT8_C(0x13)));
|
183
|
+
uint64_t x39 = ((uint64_t)(arg1[4]) * ((arg2[6]) * UINT8_C(0x13)));
|
184
|
+
uint64_t x40 = ((uint64_t)(arg1[3]) * ((arg2[9]) * UINT8_C(0x26)));
|
185
|
+
uint64_t x41 = ((uint64_t)(arg1[3]) * ((arg2[8]) * UINT8_C(0x13)));
|
186
|
+
uint64_t x42 = ((uint64_t)(arg1[3]) * ((arg2[7]) * UINT8_C(0x26)));
|
187
|
+
uint64_t x43 = ((uint64_t)(arg1[2]) * ((arg2[9]) * UINT8_C(0x13)));
|
188
|
+
uint64_t x44 = ((uint64_t)(arg1[2]) * ((arg2[8]) * UINT8_C(0x13)));
|
189
|
+
uint64_t x45 = ((uint64_t)(arg1[1]) * ((arg2[9]) * UINT8_C(0x26)));
|
156
190
|
uint64_t x46 = ((uint64_t)(arg1[9]) * (arg2[0]));
|
157
191
|
uint64_t x47 = ((uint64_t)(arg1[8]) * (arg2[1]));
|
158
192
|
uint64_t x48 = ((uint64_t)(arg1[8]) * (arg2[0]));
|
159
193
|
uint64_t x49 = ((uint64_t)(arg1[7]) * (arg2[2]));
|
160
|
-
uint64_t x50 = ((uint64_t)(arg1[7]) * ((arg2[1]) *
|
194
|
+
uint64_t x50 = ((uint64_t)(arg1[7]) * ((arg2[1]) * 0x2));
|
161
195
|
uint64_t x51 = ((uint64_t)(arg1[7]) * (arg2[0]));
|
162
196
|
uint64_t x52 = ((uint64_t)(arg1[6]) * (arg2[3]));
|
163
197
|
uint64_t x53 = ((uint64_t)(arg1[6]) * (arg2[2]));
|
164
198
|
uint64_t x54 = ((uint64_t)(arg1[6]) * (arg2[1]));
|
165
199
|
uint64_t x55 = ((uint64_t)(arg1[6]) * (arg2[0]));
|
166
200
|
uint64_t x56 = ((uint64_t)(arg1[5]) * (arg2[4]));
|
167
|
-
uint64_t x57 = ((uint64_t)(arg1[5]) * ((arg2[3]) *
|
201
|
+
uint64_t x57 = ((uint64_t)(arg1[5]) * ((arg2[3]) * 0x2));
|
168
202
|
uint64_t x58 = ((uint64_t)(arg1[5]) * (arg2[2]));
|
169
|
-
uint64_t x59 = ((uint64_t)(arg1[5]) * ((arg2[1]) *
|
203
|
+
uint64_t x59 = ((uint64_t)(arg1[5]) * ((arg2[1]) * 0x2));
|
170
204
|
uint64_t x60 = ((uint64_t)(arg1[5]) * (arg2[0]));
|
171
205
|
uint64_t x61 = ((uint64_t)(arg1[4]) * (arg2[5]));
|
172
206
|
uint64_t x62 = ((uint64_t)(arg1[4]) * (arg2[4]));
|
@@ -175,11 +209,11 @@ static void fiat_25519_carry_mul(uint32_t out1[10], const uint32_t arg1[10], con
|
|
175
209
|
uint64_t x65 = ((uint64_t)(arg1[4]) * (arg2[1]));
|
176
210
|
uint64_t x66 = ((uint64_t)(arg1[4]) * (arg2[0]));
|
177
211
|
uint64_t x67 = ((uint64_t)(arg1[3]) * (arg2[6]));
|
178
|
-
uint64_t x68 = ((uint64_t)(arg1[3]) * ((arg2[5]) *
|
212
|
+
uint64_t x68 = ((uint64_t)(arg1[3]) * ((arg2[5]) * 0x2));
|
179
213
|
uint64_t x69 = ((uint64_t)(arg1[3]) * (arg2[4]));
|
180
|
-
uint64_t x70 = ((uint64_t)(arg1[3]) * ((arg2[3]) *
|
214
|
+
uint64_t x70 = ((uint64_t)(arg1[3]) * ((arg2[3]) * 0x2));
|
181
215
|
uint64_t x71 = ((uint64_t)(arg1[3]) * (arg2[2]));
|
182
|
-
uint64_t x72 = ((uint64_t)(arg1[3]) * ((arg2[1]) *
|
216
|
+
uint64_t x72 = ((uint64_t)(arg1[3]) * ((arg2[1]) * 0x2));
|
183
217
|
uint64_t x73 = ((uint64_t)(arg1[3]) * (arg2[0]));
|
184
218
|
uint64_t x74 = ((uint64_t)(arg1[2]) * (arg2[7]));
|
185
219
|
uint64_t x75 = ((uint64_t)(arg1[2]) * (arg2[6]));
|
@@ -190,13 +224,13 @@ static void fiat_25519_carry_mul(uint32_t out1[10], const uint32_t arg1[10], con
|
|
190
224
|
uint64_t x80 = ((uint64_t)(arg1[2]) * (arg2[1]));
|
191
225
|
uint64_t x81 = ((uint64_t)(arg1[2]) * (arg2[0]));
|
192
226
|
uint64_t x82 = ((uint64_t)(arg1[1]) * (arg2[8]));
|
193
|
-
uint64_t x83 = ((uint64_t)(arg1[1]) * ((arg2[7]) *
|
227
|
+
uint64_t x83 = ((uint64_t)(arg1[1]) * ((arg2[7]) * 0x2));
|
194
228
|
uint64_t x84 = ((uint64_t)(arg1[1]) * (arg2[6]));
|
195
|
-
uint64_t x85 = ((uint64_t)(arg1[1]) * ((arg2[5]) *
|
229
|
+
uint64_t x85 = ((uint64_t)(arg1[1]) * ((arg2[5]) * 0x2));
|
196
230
|
uint64_t x86 = ((uint64_t)(arg1[1]) * (arg2[4]));
|
197
|
-
uint64_t x87 = ((uint64_t)(arg1[1]) * ((arg2[3]) *
|
231
|
+
uint64_t x87 = ((uint64_t)(arg1[1]) * ((arg2[3]) * 0x2));
|
198
232
|
uint64_t x88 = ((uint64_t)(arg1[1]) * (arg2[2]));
|
199
|
-
uint64_t x89 = ((uint64_t)(arg1[1]) * ((arg2[1]) *
|
233
|
+
uint64_t x89 = ((uint64_t)(arg1[1]) * ((arg2[1]) * 0x2));
|
200
234
|
uint64_t x90 = ((uint64_t)(arg1[1]) * (arg2[0]));
|
201
235
|
uint64_t x91 = ((uint64_t)(arg1[0]) * (arg2[9]));
|
202
236
|
uint64_t x92 = ((uint64_t)(arg1[0]) * (arg2[8]));
|
@@ -247,12 +281,12 @@ static void fiat_25519_carry_mul(uint32_t out1[10], const uint32_t arg1[10], con
|
|
247
281
|
uint64_t x137 = (x135 + x104);
|
248
282
|
uint64_t x138 = (x137 >> 25);
|
249
283
|
uint32_t x139 = (uint32_t)(x137 & UINT32_C(0x1ffffff));
|
250
|
-
uint64_t x140 = (x138 *
|
284
|
+
uint64_t x140 = (x138 * UINT8_C(0x13));
|
251
285
|
uint64_t x141 = (x103 + x140);
|
252
286
|
uint32_t x142 = (uint32_t)(x141 >> 26);
|
253
287
|
uint32_t x143 = (uint32_t)(x141 & UINT32_C(0x3ffffff));
|
254
288
|
uint32_t x144 = (x142 + x115);
|
255
|
-
|
289
|
+
fiat_25519_uint1 x145 = (fiat_25519_uint1)(x144 >> 25);
|
256
290
|
uint32_t x146 = (x144 & UINT32_C(0x1ffffff));
|
257
291
|
uint32_t x147 = (x145 + x118);
|
258
292
|
out1[0] = x143;
|
@@ -268,58 +302,62 @@ static void fiat_25519_carry_mul(uint32_t out1[10], const uint32_t arg1[10], con
|
|
268
302
|
}
|
269
303
|
|
270
304
|
/*
|
305
|
+
* The function fiat_25519_carry_square squares a field element and reduces the result.
|
306
|
+
* Postconditions:
|
307
|
+
* eval out1 mod m = (eval arg1 * eval arg1) mod m
|
308
|
+
*
|
271
309
|
* Input Bounds:
|
272
310
|
* arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]]
|
273
311
|
* Output Bounds:
|
274
312
|
* out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
275
313
|
*/
|
276
314
|
static void fiat_25519_carry_square(uint32_t out1[10], const uint32_t arg1[10]) {
|
277
|
-
uint32_t x1 = ((arg1[9]) *
|
278
|
-
uint32_t x2 = (x1 *
|
279
|
-
uint32_t x3 = ((arg1[9]) *
|
280
|
-
uint32_t x4 = ((arg1[8]) *
|
281
|
-
uint64_t x5 = (x4 *
|
282
|
-
uint32_t x6 = ((arg1[8]) *
|
283
|
-
uint32_t x7 = ((arg1[7]) *
|
284
|
-
uint32_t x8 = (x7 *
|
285
|
-
uint32_t x9 = ((arg1[7]) *
|
286
|
-
uint32_t x10 = ((arg1[6]) *
|
287
|
-
uint64_t x11 = (x10 *
|
288
|
-
uint32_t x12 = ((arg1[6]) *
|
289
|
-
uint32_t x13 = ((arg1[5]) *
|
290
|
-
uint32_t x14 = ((arg1[5]) *
|
291
|
-
uint32_t x15 = ((arg1[4]) *
|
292
|
-
uint32_t x16 = ((arg1[3]) *
|
293
|
-
uint32_t x17 = ((arg1[2]) *
|
294
|
-
uint32_t x18 = ((arg1[1]) *
|
295
|
-
uint64_t x19 = ((uint64_t)(arg1[9]) * (x1 *
|
315
|
+
uint32_t x1 = ((arg1[9]) * UINT8_C(0x13));
|
316
|
+
uint32_t x2 = (x1 * 0x2);
|
317
|
+
uint32_t x3 = ((arg1[9]) * 0x2);
|
318
|
+
uint32_t x4 = ((arg1[8]) * UINT8_C(0x13));
|
319
|
+
uint64_t x5 = ((uint64_t)x4 * 0x2);
|
320
|
+
uint32_t x6 = ((arg1[8]) * 0x2);
|
321
|
+
uint32_t x7 = ((arg1[7]) * UINT8_C(0x13));
|
322
|
+
uint32_t x8 = (x7 * 0x2);
|
323
|
+
uint32_t x9 = ((arg1[7]) * 0x2);
|
324
|
+
uint32_t x10 = ((arg1[6]) * UINT8_C(0x13));
|
325
|
+
uint64_t x11 = ((uint64_t)x10 * 0x2);
|
326
|
+
uint32_t x12 = ((arg1[6]) * 0x2);
|
327
|
+
uint32_t x13 = ((arg1[5]) * UINT8_C(0x13));
|
328
|
+
uint32_t x14 = ((arg1[5]) * 0x2);
|
329
|
+
uint32_t x15 = ((arg1[4]) * 0x2);
|
330
|
+
uint32_t x16 = ((arg1[3]) * 0x2);
|
331
|
+
uint32_t x17 = ((arg1[2]) * 0x2);
|
332
|
+
uint32_t x18 = ((arg1[1]) * 0x2);
|
333
|
+
uint64_t x19 = ((uint64_t)(arg1[9]) * (x1 * 0x2));
|
296
334
|
uint64_t x20 = ((uint64_t)(arg1[8]) * x2);
|
297
335
|
uint64_t x21 = ((uint64_t)(arg1[8]) * x4);
|
298
|
-
uint64_t x22 = ((arg1[7]) * (x2 *
|
336
|
+
uint64_t x22 = ((arg1[7]) * ((uint64_t)x2 * 0x2));
|
299
337
|
uint64_t x23 = ((arg1[7]) * x5);
|
300
|
-
uint64_t x24 = ((uint64_t)(arg1[7]) * (x7 *
|
338
|
+
uint64_t x24 = ((uint64_t)(arg1[7]) * (x7 * 0x2));
|
301
339
|
uint64_t x25 = ((uint64_t)(arg1[6]) * x2);
|
302
340
|
uint64_t x26 = ((arg1[6]) * x5);
|
303
341
|
uint64_t x27 = ((uint64_t)(arg1[6]) * x8);
|
304
342
|
uint64_t x28 = ((uint64_t)(arg1[6]) * x10);
|
305
|
-
uint64_t x29 = ((arg1[5]) * (x2 *
|
343
|
+
uint64_t x29 = ((arg1[5]) * ((uint64_t)x2 * 0x2));
|
306
344
|
uint64_t x30 = ((arg1[5]) * x5);
|
307
|
-
uint64_t x31 = ((arg1[5]) * (x8 *
|
345
|
+
uint64_t x31 = ((arg1[5]) * ((uint64_t)x8 * 0x2));
|
308
346
|
uint64_t x32 = ((arg1[5]) * x11);
|
309
|
-
uint64_t x33 = ((uint64_t)(arg1[5]) * (x13 *
|
347
|
+
uint64_t x33 = ((uint64_t)(arg1[5]) * (x13 * 0x2));
|
310
348
|
uint64_t x34 = ((uint64_t)(arg1[4]) * x2);
|
311
349
|
uint64_t x35 = ((arg1[4]) * x5);
|
312
350
|
uint64_t x36 = ((uint64_t)(arg1[4]) * x8);
|
313
351
|
uint64_t x37 = ((arg1[4]) * x11);
|
314
352
|
uint64_t x38 = ((uint64_t)(arg1[4]) * x14);
|
315
353
|
uint64_t x39 = ((uint64_t)(arg1[4]) * (arg1[4]));
|
316
|
-
uint64_t x40 = ((arg1[3]) * (x2 *
|
354
|
+
uint64_t x40 = ((arg1[3]) * ((uint64_t)x2 * 0x2));
|
317
355
|
uint64_t x41 = ((arg1[3]) * x5);
|
318
|
-
uint64_t x42 = ((arg1[3]) * (x8 *
|
356
|
+
uint64_t x42 = ((arg1[3]) * ((uint64_t)x8 * 0x2));
|
319
357
|
uint64_t x43 = ((uint64_t)(arg1[3]) * x12);
|
320
|
-
uint64_t x44 = ((uint64_t)(arg1[3]) * (x14 *
|
358
|
+
uint64_t x44 = ((uint64_t)(arg1[3]) * (x14 * 0x2));
|
321
359
|
uint64_t x45 = ((uint64_t)(arg1[3]) * x15);
|
322
|
-
uint64_t x46 = ((uint64_t)(arg1[3]) * ((arg1[3]) *
|
360
|
+
uint64_t x46 = ((uint64_t)(arg1[3]) * ((arg1[3]) * 0x2));
|
323
361
|
uint64_t x47 = ((uint64_t)(arg1[2]) * x2);
|
324
362
|
uint64_t x48 = ((arg1[2]) * x5);
|
325
363
|
uint64_t x49 = ((uint64_t)(arg1[2]) * x9);
|
@@ -328,15 +366,15 @@ static void fiat_25519_carry_square(uint32_t out1[10], const uint32_t arg1[10])
|
|
328
366
|
uint64_t x52 = ((uint64_t)(arg1[2]) * x15);
|
329
367
|
uint64_t x53 = ((uint64_t)(arg1[2]) * x16);
|
330
368
|
uint64_t x54 = ((uint64_t)(arg1[2]) * (arg1[2]));
|
331
|
-
uint64_t x55 = ((arg1[1]) * (x2 *
|
369
|
+
uint64_t x55 = ((arg1[1]) * ((uint64_t)x2 * 0x2));
|
332
370
|
uint64_t x56 = ((uint64_t)(arg1[1]) * x6);
|
333
|
-
uint64_t x57 = ((uint64_t)(arg1[1]) * (x9 *
|
371
|
+
uint64_t x57 = ((uint64_t)(arg1[1]) * (x9 * 0x2));
|
334
372
|
uint64_t x58 = ((uint64_t)(arg1[1]) * x12);
|
335
|
-
uint64_t x59 = ((uint64_t)(arg1[1]) * (x14 *
|
373
|
+
uint64_t x59 = ((uint64_t)(arg1[1]) * (x14 * 0x2));
|
336
374
|
uint64_t x60 = ((uint64_t)(arg1[1]) * x15);
|
337
|
-
uint64_t x61 = ((uint64_t)(arg1[1]) * (x16 *
|
375
|
+
uint64_t x61 = ((uint64_t)(arg1[1]) * (x16 * 0x2));
|
338
376
|
uint64_t x62 = ((uint64_t)(arg1[1]) * x17);
|
339
|
-
uint64_t x63 = ((uint64_t)(arg1[1]) * ((arg1[1]) *
|
377
|
+
uint64_t x63 = ((uint64_t)(arg1[1]) * ((arg1[1]) * 0x2));
|
340
378
|
uint64_t x64 = ((uint64_t)(arg1[0]) * x3);
|
341
379
|
uint64_t x65 = ((uint64_t)(arg1[0]) * x6);
|
342
380
|
uint64_t x66 = ((uint64_t)(arg1[0]) * x9);
|
@@ -386,12 +424,12 @@ static void fiat_25519_carry_square(uint32_t out1[10], const uint32_t arg1[10])
|
|
386
424
|
uint64_t x110 = (x108 + x77);
|
387
425
|
uint64_t x111 = (x110 >> 25);
|
388
426
|
uint32_t x112 = (uint32_t)(x110 & UINT32_C(0x1ffffff));
|
389
|
-
uint64_t x113 = (x111 *
|
427
|
+
uint64_t x113 = (x111 * UINT8_C(0x13));
|
390
428
|
uint64_t x114 = (x76 + x113);
|
391
429
|
uint32_t x115 = (uint32_t)(x114 >> 26);
|
392
430
|
uint32_t x116 = (uint32_t)(x114 & UINT32_C(0x3ffffff));
|
393
431
|
uint32_t x117 = (x115 + x88);
|
394
|
-
|
432
|
+
fiat_25519_uint1 x118 = (fiat_25519_uint1)(x117 >> 25);
|
395
433
|
uint32_t x119 = (x117 & UINT32_C(0x1ffffff));
|
396
434
|
uint32_t x120 = (x118 + x91);
|
397
435
|
out1[0] = x116;
|
@@ -407,72 +445,10 @@ static void fiat_25519_carry_square(uint32_t out1[10], const uint32_t arg1[10])
|
|
407
445
|
}
|
408
446
|
|
409
447
|
/*
|
410
|
-
*
|
411
|
-
*
|
412
|
-
*
|
413
|
-
*
|
414
|
-
*/
|
415
|
-
static void fiat_25519_carry_scmul_121666(uint32_t out1[10], const uint32_t arg1[10]) {
|
416
|
-
uint64_t x1 = ((uint64_t)UINT32_C(0x1db42) * (arg1[9]));
|
417
|
-
uint64_t x2 = ((uint64_t)UINT32_C(0x1db42) * (arg1[8]));
|
418
|
-
uint64_t x3 = ((uint64_t)UINT32_C(0x1db42) * (arg1[7]));
|
419
|
-
uint64_t x4 = ((uint64_t)UINT32_C(0x1db42) * (arg1[6]));
|
420
|
-
uint64_t x5 = ((uint64_t)UINT32_C(0x1db42) * (arg1[5]));
|
421
|
-
uint64_t x6 = ((uint64_t)UINT32_C(0x1db42) * (arg1[4]));
|
422
|
-
uint64_t x7 = ((uint64_t)UINT32_C(0x1db42) * (arg1[3]));
|
423
|
-
uint64_t x8 = ((uint64_t)UINT32_C(0x1db42) * (arg1[2]));
|
424
|
-
uint64_t x9 = ((uint64_t)UINT32_C(0x1db42) * (arg1[1]));
|
425
|
-
uint64_t x10 = ((uint64_t)UINT32_C(0x1db42) * (arg1[0]));
|
426
|
-
uint32_t x11 = (uint32_t)(x10 >> 26);
|
427
|
-
uint32_t x12 = (uint32_t)(x10 & UINT32_C(0x3ffffff));
|
428
|
-
uint64_t x13 = (x11 + x9);
|
429
|
-
uint32_t x14 = (uint32_t)(x13 >> 25);
|
430
|
-
uint32_t x15 = (uint32_t)(x13 & UINT32_C(0x1ffffff));
|
431
|
-
uint64_t x16 = (x14 + x8);
|
432
|
-
uint32_t x17 = (uint32_t)(x16 >> 26);
|
433
|
-
uint32_t x18 = (uint32_t)(x16 & UINT32_C(0x3ffffff));
|
434
|
-
uint64_t x19 = (x17 + x7);
|
435
|
-
uint32_t x20 = (uint32_t)(x19 >> 25);
|
436
|
-
uint32_t x21 = (uint32_t)(x19 & UINT32_C(0x1ffffff));
|
437
|
-
uint64_t x22 = (x20 + x6);
|
438
|
-
uint32_t x23 = (uint32_t)(x22 >> 26);
|
439
|
-
uint32_t x24 = (uint32_t)(x22 & UINT32_C(0x3ffffff));
|
440
|
-
uint64_t x25 = (x23 + x5);
|
441
|
-
uint32_t x26 = (uint32_t)(x25 >> 25);
|
442
|
-
uint32_t x27 = (uint32_t)(x25 & UINT32_C(0x1ffffff));
|
443
|
-
uint64_t x28 = (x26 + x4);
|
444
|
-
uint32_t x29 = (uint32_t)(x28 >> 26);
|
445
|
-
uint32_t x30 = (uint32_t)(x28 & UINT32_C(0x3ffffff));
|
446
|
-
uint64_t x31 = (x29 + x3);
|
447
|
-
uint32_t x32 = (uint32_t)(x31 >> 25);
|
448
|
-
uint32_t x33 = (uint32_t)(x31 & UINT32_C(0x1ffffff));
|
449
|
-
uint64_t x34 = (x32 + x2);
|
450
|
-
uint32_t x35 = (uint32_t)(x34 >> 26);
|
451
|
-
uint32_t x36 = (uint32_t)(x34 & UINT32_C(0x3ffffff));
|
452
|
-
uint64_t x37 = (x35 + x1);
|
453
|
-
uint32_t x38 = (uint32_t)(x37 >> 25);
|
454
|
-
uint32_t x39 = (uint32_t)(x37 & UINT32_C(0x1ffffff));
|
455
|
-
uint32_t x40 = (x38 * (uint32_t)UINT8_C(0x13));
|
456
|
-
uint32_t x41 = (x12 + x40);
|
457
|
-
uint32_t x42 = (x41 >> 26);
|
458
|
-
uint32_t x43 = (x41 & UINT32_C(0x3ffffff));
|
459
|
-
uint32_t x44 = (x42 + x15);
|
460
|
-
uint32_t x45 = (x44 >> 25);
|
461
|
-
uint32_t x46 = (x44 & UINT32_C(0x1ffffff));
|
462
|
-
uint32_t x47 = (x45 + x18);
|
463
|
-
out1[0] = x43;
|
464
|
-
out1[1] = x46;
|
465
|
-
out1[2] = x47;
|
466
|
-
out1[3] = x21;
|
467
|
-
out1[4] = x24;
|
468
|
-
out1[5] = x27;
|
469
|
-
out1[6] = x30;
|
470
|
-
out1[7] = x33;
|
471
|
-
out1[8] = x36;
|
472
|
-
out1[9] = x39;
|
473
|
-
}
|
474
|
-
|
475
|
-
/*
|
448
|
+
* The function fiat_25519_carry reduces a field element.
|
449
|
+
* Postconditions:
|
450
|
+
* eval out1 mod m = eval arg1 mod m
|
451
|
+
*
|
476
452
|
* Input Bounds:
|
477
453
|
* arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]]
|
478
454
|
* Output Bounds:
|
@@ -489,11 +465,11 @@ static void fiat_25519_carry(uint32_t out1[10], const uint32_t arg1[10]) {
|
|
489
465
|
uint32_t x8 = ((x7 >> 26) + (arg1[7]));
|
490
466
|
uint32_t x9 = ((x8 >> 25) + (arg1[8]));
|
491
467
|
uint32_t x10 = ((x9 >> 26) + (arg1[9]));
|
492
|
-
uint32_t x11 = ((x1 & UINT32_C(0x3ffffff)) + ((x10 >> 25) *
|
493
|
-
uint32_t x12 = ((x11 >> 26) + (x2 & UINT32_C(0x1ffffff)));
|
468
|
+
uint32_t x11 = ((x1 & UINT32_C(0x3ffffff)) + ((x10 >> 25) * UINT8_C(0x13)));
|
469
|
+
uint32_t x12 = ((fiat_25519_uint1)(x11 >> 26) + (x2 & UINT32_C(0x1ffffff)));
|
494
470
|
uint32_t x13 = (x11 & UINT32_C(0x3ffffff));
|
495
471
|
uint32_t x14 = (x12 & UINT32_C(0x1ffffff));
|
496
|
-
uint32_t x15 = ((x12 >> 25) + (x3 & UINT32_C(0x3ffffff)));
|
472
|
+
uint32_t x15 = ((fiat_25519_uint1)(x12 >> 25) + (x3 & UINT32_C(0x3ffffff)));
|
497
473
|
uint32_t x16 = (x4 & UINT32_C(0x1ffffff));
|
498
474
|
uint32_t x17 = (x5 & UINT32_C(0x3ffffff));
|
499
475
|
uint32_t x18 = (x6 & UINT32_C(0x1ffffff));
|
@@ -514,6 +490,10 @@ static void fiat_25519_carry(uint32_t out1[10], const uint32_t arg1[10]) {
|
|
514
490
|
}
|
515
491
|
|
516
492
|
/*
|
493
|
+
* The function fiat_25519_add adds two field elements.
|
494
|
+
* Postconditions:
|
495
|
+
* eval out1 mod m = (eval arg1 + eval arg2) mod m
|
496
|
+
*
|
517
497
|
* Input Bounds:
|
518
498
|
* arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
519
499
|
* arg2: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
@@ -544,6 +524,10 @@ static void fiat_25519_add(uint32_t out1[10], const uint32_t arg1[10], const uin
|
|
544
524
|
}
|
545
525
|
|
546
526
|
/*
|
527
|
+
* The function fiat_25519_sub subtracts two field elements.
|
528
|
+
* Postconditions:
|
529
|
+
* eval out1 mod m = (eval arg1 - eval arg2) mod m
|
530
|
+
*
|
547
531
|
* Input Bounds:
|
548
532
|
* arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
549
533
|
* arg2: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
@@ -574,6 +558,10 @@ static void fiat_25519_sub(uint32_t out1[10], const uint32_t arg1[10], const uin
|
|
574
558
|
}
|
575
559
|
|
576
560
|
/*
|
561
|
+
* The function fiat_25519_opp negates a field element.
|
562
|
+
* Postconditions:
|
563
|
+
* eval out1 mod m = -eval arg1 mod m
|
564
|
+
*
|
577
565
|
* Input Bounds:
|
578
566
|
* arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
579
567
|
* Output Bounds:
|
@@ -603,6 +591,10 @@ static void fiat_25519_opp(uint32_t out1[10], const uint32_t arg1[10]) {
|
|
603
591
|
}
|
604
592
|
|
605
593
|
/*
|
594
|
+
* The function fiat_25519_selectznz is a multi-limb conditional select.
|
595
|
+
* Postconditions:
|
596
|
+
* eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)
|
597
|
+
*
|
606
598
|
* Input Bounds:
|
607
599
|
* arg1: [0x0 ~> 0x1]
|
608
600
|
* arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
|
@@ -644,6 +636,10 @@ static void fiat_25519_selectznz(uint32_t out1[10], fiat_25519_uint1 arg1, const
|
|
644
636
|
}
|
645
637
|
|
646
638
|
/*
|
639
|
+
* The function fiat_25519_to_bytes serializes a field element to bytes in little-endian order.
|
640
|
+
* Postconditions:
|
641
|
+
* out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31]
|
642
|
+
*
|
647
643
|
* Input Bounds:
|
648
644
|
* arg1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
649
645
|
* Output Bounds:
|
@@ -684,34 +680,34 @@ static void fiat_25519_to_bytes(uint8_t out1[32], const uint32_t arg1[10]) {
|
|
684
680
|
fiat_25519_cmovznz_u32(&x21, x20, 0x0, UINT32_C(0xffffffff));
|
685
681
|
uint32_t x22;
|
686
682
|
fiat_25519_uint1 x23;
|
687
|
-
fiat_25519_addcarryx_u26(&x22, &x23, 0x0, (x21 & UINT32_C(0x3ffffed))
|
683
|
+
fiat_25519_addcarryx_u26(&x22, &x23, 0x0, x1, (x21 & UINT32_C(0x3ffffed)));
|
688
684
|
uint32_t x24;
|
689
685
|
fiat_25519_uint1 x25;
|
690
|
-
fiat_25519_addcarryx_u25(&x24, &x25, x23, (x21 & UINT32_C(0x1ffffff))
|
686
|
+
fiat_25519_addcarryx_u25(&x24, &x25, x23, x3, (x21 & UINT32_C(0x1ffffff)));
|
691
687
|
uint32_t x26;
|
692
688
|
fiat_25519_uint1 x27;
|
693
|
-
fiat_25519_addcarryx_u26(&x26, &x27, x25, (x21 & UINT32_C(0x3ffffff))
|
689
|
+
fiat_25519_addcarryx_u26(&x26, &x27, x25, x5, (x21 & UINT32_C(0x3ffffff)));
|
694
690
|
uint32_t x28;
|
695
691
|
fiat_25519_uint1 x29;
|
696
|
-
fiat_25519_addcarryx_u25(&x28, &x29, x27, (x21 & UINT32_C(0x1ffffff))
|
692
|
+
fiat_25519_addcarryx_u25(&x28, &x29, x27, x7, (x21 & UINT32_C(0x1ffffff)));
|
697
693
|
uint32_t x30;
|
698
694
|
fiat_25519_uint1 x31;
|
699
|
-
fiat_25519_addcarryx_u26(&x30, &x31, x29, (x21 & UINT32_C(0x3ffffff))
|
695
|
+
fiat_25519_addcarryx_u26(&x30, &x31, x29, x9, (x21 & UINT32_C(0x3ffffff)));
|
700
696
|
uint32_t x32;
|
701
697
|
fiat_25519_uint1 x33;
|
702
|
-
fiat_25519_addcarryx_u25(&x32, &x33, x31, (x21 & UINT32_C(0x1ffffff))
|
698
|
+
fiat_25519_addcarryx_u25(&x32, &x33, x31, x11, (x21 & UINT32_C(0x1ffffff)));
|
703
699
|
uint32_t x34;
|
704
700
|
fiat_25519_uint1 x35;
|
705
|
-
fiat_25519_addcarryx_u26(&x34, &x35, x33, (x21 & UINT32_C(0x3ffffff))
|
701
|
+
fiat_25519_addcarryx_u26(&x34, &x35, x33, x13, (x21 & UINT32_C(0x3ffffff)));
|
706
702
|
uint32_t x36;
|
707
703
|
fiat_25519_uint1 x37;
|
708
|
-
fiat_25519_addcarryx_u25(&x36, &x37, x35, (x21 & UINT32_C(0x1ffffff))
|
704
|
+
fiat_25519_addcarryx_u25(&x36, &x37, x35, x15, (x21 & UINT32_C(0x1ffffff)));
|
709
705
|
uint32_t x38;
|
710
706
|
fiat_25519_uint1 x39;
|
711
|
-
fiat_25519_addcarryx_u26(&x38, &x39, x37, (x21 & UINT32_C(0x3ffffff))
|
707
|
+
fiat_25519_addcarryx_u26(&x38, &x39, x37, x17, (x21 & UINT32_C(0x3ffffff)));
|
712
708
|
uint32_t x40;
|
713
709
|
fiat_25519_uint1 x41;
|
714
|
-
fiat_25519_addcarryx_u25(&x40, &x41, x39, (x21 & UINT32_C(0x1ffffff))
|
710
|
+
fiat_25519_addcarryx_u25(&x40, &x41, x39, x19, (x21 & UINT32_C(0x1ffffff)));
|
715
711
|
uint32_t x42 = (x40 << 6);
|
716
712
|
uint32_t x43 = (x38 << 4);
|
717
713
|
uint32_t x44 = (x36 << 3);
|
@@ -824,6 +820,10 @@ static void fiat_25519_to_bytes(uint8_t out1[32], const uint32_t arg1[10]) {
|
|
824
820
|
}
|
825
821
|
|
826
822
|
/*
|
823
|
+
* The function fiat_25519_from_bytes deserializes a field element from bytes in little-endian order.
|
824
|
+
* Postconditions:
|
825
|
+
* eval out1 mod m = bytes_eval arg1 mod m
|
826
|
+
*
|
827
827
|
* Input Bounds:
|
828
828
|
* arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x7f]]
|
829
829
|
* Output Bounds:
|
@@ -909,3 +909,73 @@ static void fiat_25519_from_bytes(uint32_t out1[10], const uint8_t arg1[32]) {
|
|
909
909
|
out1[9] = x67;
|
910
910
|
}
|
911
911
|
|
912
|
+
/*
|
913
|
+
* The function fiat_25519_carry_scmul_121666 multiplies a field element by 121666 and reduces the result.
|
914
|
+
* Postconditions:
|
915
|
+
* eval out1 mod m = (121666 * eval arg1) mod m
|
916
|
+
*
|
917
|
+
* Input Bounds:
|
918
|
+
* arg1: [[0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999], [0x0 ~> 0xd333332], [0x0 ~> 0x6999999]]
|
919
|
+
* Output Bounds:
|
920
|
+
* out1: [[0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333], [0x0 ~> 0x4666666], [0x0 ~> 0x2333333]]
|
921
|
+
*/
|
922
|
+
static void fiat_25519_carry_scmul_121666(uint32_t out1[10], const uint32_t arg1[10]) {
|
923
|
+
uint64_t x1 = ((uint64_t)UINT32_C(0x1db42) * (arg1[9]));
|
924
|
+
uint64_t x2 = ((uint64_t)UINT32_C(0x1db42) * (arg1[8]));
|
925
|
+
uint64_t x3 = ((uint64_t)UINT32_C(0x1db42) * (arg1[7]));
|
926
|
+
uint64_t x4 = ((uint64_t)UINT32_C(0x1db42) * (arg1[6]));
|
927
|
+
uint64_t x5 = ((uint64_t)UINT32_C(0x1db42) * (arg1[5]));
|
928
|
+
uint64_t x6 = ((uint64_t)UINT32_C(0x1db42) * (arg1[4]));
|
929
|
+
uint64_t x7 = ((uint64_t)UINT32_C(0x1db42) * (arg1[3]));
|
930
|
+
uint64_t x8 = ((uint64_t)UINT32_C(0x1db42) * (arg1[2]));
|
931
|
+
uint64_t x9 = ((uint64_t)UINT32_C(0x1db42) * (arg1[1]));
|
932
|
+
uint64_t x10 = ((uint64_t)UINT32_C(0x1db42) * (arg1[0]));
|
933
|
+
uint32_t x11 = (uint32_t)(x10 >> 26);
|
934
|
+
uint32_t x12 = (uint32_t)(x10 & UINT32_C(0x3ffffff));
|
935
|
+
uint64_t x13 = (x11 + x9);
|
936
|
+
uint32_t x14 = (uint32_t)(x13 >> 25);
|
937
|
+
uint32_t x15 = (uint32_t)(x13 & UINT32_C(0x1ffffff));
|
938
|
+
uint64_t x16 = (x14 + x8);
|
939
|
+
uint32_t x17 = (uint32_t)(x16 >> 26);
|
940
|
+
uint32_t x18 = (uint32_t)(x16 & UINT32_C(0x3ffffff));
|
941
|
+
uint64_t x19 = (x17 + x7);
|
942
|
+
uint32_t x20 = (uint32_t)(x19 >> 25);
|
943
|
+
uint32_t x21 = (uint32_t)(x19 & UINT32_C(0x1ffffff));
|
944
|
+
uint64_t x22 = (x20 + x6);
|
945
|
+
uint32_t x23 = (uint32_t)(x22 >> 26);
|
946
|
+
uint32_t x24 = (uint32_t)(x22 & UINT32_C(0x3ffffff));
|
947
|
+
uint64_t x25 = (x23 + x5);
|
948
|
+
uint32_t x26 = (uint32_t)(x25 >> 25);
|
949
|
+
uint32_t x27 = (uint32_t)(x25 & UINT32_C(0x1ffffff));
|
950
|
+
uint64_t x28 = (x26 + x4);
|
951
|
+
uint32_t x29 = (uint32_t)(x28 >> 26);
|
952
|
+
uint32_t x30 = (uint32_t)(x28 & UINT32_C(0x3ffffff));
|
953
|
+
uint64_t x31 = (x29 + x3);
|
954
|
+
uint32_t x32 = (uint32_t)(x31 >> 25);
|
955
|
+
uint32_t x33 = (uint32_t)(x31 & UINT32_C(0x1ffffff));
|
956
|
+
uint64_t x34 = (x32 + x2);
|
957
|
+
uint32_t x35 = (uint32_t)(x34 >> 26);
|
958
|
+
uint32_t x36 = (uint32_t)(x34 & UINT32_C(0x3ffffff));
|
959
|
+
uint64_t x37 = (x35 + x1);
|
960
|
+
uint32_t x38 = (uint32_t)(x37 >> 25);
|
961
|
+
uint32_t x39 = (uint32_t)(x37 & UINT32_C(0x1ffffff));
|
962
|
+
uint32_t x40 = (x38 * UINT8_C(0x13));
|
963
|
+
uint32_t x41 = (x12 + x40);
|
964
|
+
fiat_25519_uint1 x42 = (fiat_25519_uint1)(x41 >> 26);
|
965
|
+
uint32_t x43 = (x41 & UINT32_C(0x3ffffff));
|
966
|
+
uint32_t x44 = (x42 + x15);
|
967
|
+
fiat_25519_uint1 x45 = (fiat_25519_uint1)(x44 >> 25);
|
968
|
+
uint32_t x46 = (x44 & UINT32_C(0x1ffffff));
|
969
|
+
uint32_t x47 = (x45 + x18);
|
970
|
+
out1[0] = x43;
|
971
|
+
out1[1] = x46;
|
972
|
+
out1[2] = x47;
|
973
|
+
out1[3] = x21;
|
974
|
+
out1[4] = x24;
|
975
|
+
out1[5] = x27;
|
976
|
+
out1[6] = x30;
|
977
|
+
out1[7] = x33;
|
978
|
+
out1[8] = x36;
|
979
|
+
out1[9] = x39;
|
980
|
+
}
|
981
|
+
|