1*a6aa18fbSYabin Cui# Copyright 2019 Google LLC. 2*a6aa18fbSYabin Cui# 3*a6aa18fbSYabin Cui# Licensed under the Apache License, Version 2.0 (the "License"); 4*a6aa18fbSYabin Cui# you may not use this file except in compliance with the License. 5*a6aa18fbSYabin Cui# You may obtain a copy of the License at 6*a6aa18fbSYabin Cui# 7*a6aa18fbSYabin Cui# https://www.apache.org/licenses/LICENSE-2.0 8*a6aa18fbSYabin Cui# 9*a6aa18fbSYabin Cui# Unless required by applicable law or agreed to in writing, software 10*a6aa18fbSYabin Cui# distributed under the License is distributed on an "AS IS" BASIS, 11*a6aa18fbSYabin Cui# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*a6aa18fbSYabin Cui# See the License for the specific language governing permissions and 13*a6aa18fbSYabin Cui# limitations under the License. 14*a6aa18fbSYabin Cui 15*a6aa18fbSYabin Cuiload("@com_github_grpc_grpc//bazel:grpc_build_system.bzl", "grpc_proto_library") 16*a6aa18fbSYabin Cui 17*a6aa18fbSYabin Cuipackage(default_visibility = ["//visibility:public"]) 18*a6aa18fbSYabin Cui 19*a6aa18fbSYabin Cuigrpc_proto_library( 20*a6aa18fbSYabin Cui name = "match_proto", 21*a6aa18fbSYabin Cui srcs = ["match.proto"], 22*a6aa18fbSYabin Cui) 23*a6aa18fbSYabin Cui 24*a6aa18fbSYabin Cuigrpc_proto_library( 25*a6aa18fbSYabin Cui name = "private_intersection_sum_proto", 26*a6aa18fbSYabin Cui srcs = ["private_intersection_sum.proto"], 27*a6aa18fbSYabin Cui deps = [ 28*a6aa18fbSYabin Cui ":match_proto", 29*a6aa18fbSYabin Cui ], 30*a6aa18fbSYabin Cui) 31*a6aa18fbSYabin Cui 32*a6aa18fbSYabin Cuigrpc_proto_library( 33*a6aa18fbSYabin Cui name = "private_join_and_compute_proto", 34*a6aa18fbSYabin Cui srcs = ["private_join_and_compute.proto"], 35*a6aa18fbSYabin Cui deps = [ 36*a6aa18fbSYabin Cui ":private_intersection_sum_proto", 37*a6aa18fbSYabin Cui ], 38*a6aa18fbSYabin Cui) 39*a6aa18fbSYabin Cui 40*a6aa18fbSYabin Cuicc_library( 41*a6aa18fbSYabin Cui name = "message_sink", 42*a6aa18fbSYabin Cui hdrs = ["message_sink.h"], 43*a6aa18fbSYabin Cui deps = [ 44*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 45*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 46*a6aa18fbSYabin Cui "@com_google_absl//absl/memory", 47*a6aa18fbSYabin Cui ], 48*a6aa18fbSYabin Cui) 49*a6aa18fbSYabin Cui 50*a6aa18fbSYabin Cuicc_library( 51*a6aa18fbSYabin Cui name = "protocol_client", 52*a6aa18fbSYabin Cui hdrs = ["protocol_client.h"], 53*a6aa18fbSYabin Cui deps = [ 54*a6aa18fbSYabin Cui ":message_sink", 55*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 56*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 57*a6aa18fbSYabin Cui ], 58*a6aa18fbSYabin Cui) 59*a6aa18fbSYabin Cui 60*a6aa18fbSYabin Cuicc_library( 61*a6aa18fbSYabin Cui name = "client_impl", 62*a6aa18fbSYabin Cui srcs = ["client_impl.cc"], 63*a6aa18fbSYabin Cui hdrs = ["client_impl.h"], 64*a6aa18fbSYabin Cui deps = [ 65*a6aa18fbSYabin Cui ":match_proto", 66*a6aa18fbSYabin Cui ":message_sink", 67*a6aa18fbSYabin Cui ":private_intersection_sum_proto", 68*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 69*a6aa18fbSYabin Cui ":protocol_client", 70*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:bn_util", 71*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:ec_commutative_cipher", 72*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:paillier", 73*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 74*a6aa18fbSYabin Cui ], 75*a6aa18fbSYabin Cui) 76*a6aa18fbSYabin Cui 77*a6aa18fbSYabin Cuicc_library( 78*a6aa18fbSYabin Cui name = "protocol_server", 79*a6aa18fbSYabin Cui hdrs = ["protocol_server.h"], 80*a6aa18fbSYabin Cui deps = [ 81*a6aa18fbSYabin Cui ":message_sink", 82*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 83*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 84*a6aa18fbSYabin Cui ], 85*a6aa18fbSYabin Cui) 86*a6aa18fbSYabin Cui 87*a6aa18fbSYabin Cuicc_library( 88*a6aa18fbSYabin Cui name = "server_impl", 89*a6aa18fbSYabin Cui srcs = ["server_impl.cc"], 90*a6aa18fbSYabin Cui hdrs = ["server_impl.h"], 91*a6aa18fbSYabin Cui deps = [ 92*a6aa18fbSYabin Cui ":match_proto", 93*a6aa18fbSYabin Cui ":message_sink", 94*a6aa18fbSYabin Cui ":private_intersection_sum_proto", 95*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 96*a6aa18fbSYabin Cui ":protocol_server", 97*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:bn_util", 98*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:ec_commutative_cipher", 99*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:paillier", 100*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 101*a6aa18fbSYabin Cui ], 102*a6aa18fbSYabin Cui) 103*a6aa18fbSYabin Cui 104*a6aa18fbSYabin Cuicc_library( 105*a6aa18fbSYabin Cui name = "data_util", 106*a6aa18fbSYabin Cui srcs = ["data_util.cc"], 107*a6aa18fbSYabin Cui hdrs = ["data_util.h"], 108*a6aa18fbSYabin Cui deps = [ 109*a6aa18fbSYabin Cui ":match_proto", 110*a6aa18fbSYabin Cui "//private_join_and_compute/crypto:bn_util", 111*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 112*a6aa18fbSYabin Cui "@com_google_absl//absl/container:btree", 113*a6aa18fbSYabin Cui "@com_google_absl//absl/strings", 114*a6aa18fbSYabin Cui ], 115*a6aa18fbSYabin Cui) 116*a6aa18fbSYabin Cui 117*a6aa18fbSYabin Cuicc_binary( 118*a6aa18fbSYabin Cui name = "generate_dummy_data", 119*a6aa18fbSYabin Cui srcs = ["generate_dummy_data.cc"], 120*a6aa18fbSYabin Cui deps = [ 121*a6aa18fbSYabin Cui ":data_util", 122*a6aa18fbSYabin Cui "@com_google_absl//absl/base", 123*a6aa18fbSYabin Cui "@com_google_absl//absl/flags:flag", 124*a6aa18fbSYabin Cui "@com_google_absl//absl/flags:parse", 125*a6aa18fbSYabin Cui "@com_google_absl//absl/log", 126*a6aa18fbSYabin Cui ], 127*a6aa18fbSYabin Cui) 128*a6aa18fbSYabin Cui 129*a6aa18fbSYabin Cuicc_library( 130*a6aa18fbSYabin Cui name = "private_join_and_compute_rpc_impl", 131*a6aa18fbSYabin Cui srcs = ["private_join_and_compute_rpc_impl.cc"], 132*a6aa18fbSYabin Cui hdrs = ["private_join_and_compute_rpc_impl.h"], 133*a6aa18fbSYabin Cui deps = [ 134*a6aa18fbSYabin Cui ":message_sink", 135*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 136*a6aa18fbSYabin Cui ":protocol_server", 137*a6aa18fbSYabin Cui "//private_join_and_compute/util:status_includes", 138*a6aa18fbSYabin Cui "@com_github_grpc_grpc//:grpc++", 139*a6aa18fbSYabin Cui ], 140*a6aa18fbSYabin Cui) 141*a6aa18fbSYabin Cui 142*a6aa18fbSYabin Cuicc_binary( 143*a6aa18fbSYabin Cui name = "server", 144*a6aa18fbSYabin Cui srcs = ["server.cc"], 145*a6aa18fbSYabin Cui deps = [ 146*a6aa18fbSYabin Cui ":data_util", 147*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 148*a6aa18fbSYabin Cui ":private_join_and_compute_rpc_impl", 149*a6aa18fbSYabin Cui ":protocol_server", 150*a6aa18fbSYabin Cui ":server_impl", 151*a6aa18fbSYabin Cui "@com_github_grpc_grpc//:grpc", 152*a6aa18fbSYabin Cui "@com_github_grpc_grpc//:grpc++", 153*a6aa18fbSYabin Cui "@com_google_absl//absl/base", 154*a6aa18fbSYabin Cui "@com_google_absl//absl/flags:flag", 155*a6aa18fbSYabin Cui "@com_google_absl//absl/flags:parse", 156*a6aa18fbSYabin Cui ], 157*a6aa18fbSYabin Cui) 158*a6aa18fbSYabin Cui 159*a6aa18fbSYabin Cuicc_binary( 160*a6aa18fbSYabin Cui name = "client", 161*a6aa18fbSYabin Cui srcs = ["client.cc"], 162*a6aa18fbSYabin Cui deps = [ 163*a6aa18fbSYabin Cui ":client_impl", 164*a6aa18fbSYabin Cui ":data_util", 165*a6aa18fbSYabin Cui ":private_join_and_compute_proto", 166*a6aa18fbSYabin Cui ":protocol_client", 167*a6aa18fbSYabin Cui "@com_github_grpc_grpc//:grpc", 168*a6aa18fbSYabin Cui "@com_github_grpc_grpc//:grpc++", 169*a6aa18fbSYabin Cui "@com_google_absl//absl/base", 170*a6aa18fbSYabin Cui "@com_google_absl//absl/flags:flag", 171*a6aa18fbSYabin Cui "@com_google_absl//absl/flags:parse", 172*a6aa18fbSYabin Cui "@com_google_absl//absl/strings", 173*a6aa18fbSYabin Cui ], 174*a6aa18fbSYabin Cui) 175