1# Copyright 2019 Google LLC. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15# Build file for crypto folder in open-source Private Join and Compute. 16 17load("@com_github_grpc_grpc//bazel:grpc_build_system.bzl", "grpc_proto_library") 18 19package(default_visibility = ["//visibility:public"]) 20 21cc_library( 22 name = "openssl_includes", 23 hdrs = ["openssl.inc"], 24 deps = [ 25 "@boringssl//:ssl", 26 ], 27) 28 29cc_library( 30 name = "openssl_init", 31 srcs = ["openssl_init.cc"], 32 hdrs = ["openssl_init.h"], 33 deps = [ 34 ":openssl_includes", 35 "@boringssl//:ssl", 36 "@com_google_absl//absl/log", 37 ], 38) 39 40cc_library( 41 name = "bn_util", 42 srcs = [ 43 "big_num.cc", 44 "context.cc", 45 ], 46 hdrs = [ 47 "big_num.h", 48 "context.h", 49 ], 50 deps = [ 51 ":openssl_includes", 52 ":openssl_init", 53 "//private_join_and_compute/util:status_includes", 54 "@com_google_absl//absl/flags:flag", 55 "@com_google_absl//absl/log", 56 "@com_google_absl//absl/log:check", 57 "@com_google_absl//absl/strings", 58 ], 59) 60 61cc_library( 62 name = "mont_mul", 63 srcs = [ 64 "mont_mul.cc", 65 ], 66 hdrs = [ 67 "mont_mul.h", 68 ], 69 deps = [ 70 ":bn_util", 71 ":openssl_includes", 72 "@com_google_absl//absl/log", 73 "@com_google_absl//absl/log:check", 74 "@com_google_absl//absl/strings", 75 ], 76) 77 78cc_library( 79 name = "ec_util", 80 srcs = [ 81 "ec_group.cc", 82 "ec_point.cc", 83 ], 84 hdrs = [ 85 "ec_group.h", 86 "ec_point.h", 87 ], 88 deps = [ 89 ":bn_util", 90 ":openssl_includes", 91 "//private_join_and_compute/util:status_includes", 92 "@com_google_absl//absl/log", 93 "@com_google_absl//absl/log:check", 94 "@com_google_absl//absl/strings", 95 ], 96) 97 98cc_library( 99 name = "elgamal", 100 srcs = [ 101 "elgamal.cc", 102 ], 103 hdrs = [ 104 "elgamal.h", 105 ], 106 deps = [ 107 ":bn_util", 108 ":ec_util", 109 "//private_join_and_compute/util:status_includes", 110 "@com_google_absl//absl/log", 111 "@com_google_absl//absl/memory", 112 ], 113) 114 115cc_library( 116 name = "commutative_elgamal", 117 srcs = [ 118 "commutative_elgamal.cc", 119 ], 120 hdrs = [ 121 "commutative_elgamal.h", 122 ], 123 deps = [ 124 ":bn_util", 125 ":ec_util", 126 ":elgamal", 127 "//private_join_and_compute/util:status_includes", 128 "@com_google_absl//absl/log", 129 "@com_google_absl//absl/strings", 130 ], 131) 132 133cc_library( 134 name = "ec_point_util", 135 srcs = [ 136 "ec_point_util.cc", 137 ], 138 hdrs = [ 139 "ec_point_util.h", 140 ], 141 deps = [ 142 ":bn_util", 143 ":ec_commutative_cipher", 144 ":ec_util", 145 "//private_join_and_compute/util:status_includes", 146 "@com_google_absl//absl/log", 147 "@com_google_absl//absl/strings", 148 ], 149) 150 151cc_library( 152 name = "ec_commutative_cipher", 153 srcs = [ 154 "ec_commutative_cipher.cc", 155 ], 156 hdrs = [ 157 "ec_commutative_cipher.h", 158 ], 159 deps = [ 160 ":bn_util", 161 ":ec_util", 162 ":elgamal", 163 "//private_join_and_compute/util:status_includes", 164 "@com_google_absl//absl/log", 165 "@com_google_absl//absl/log:check", 166 "@com_google_absl//absl/strings", 167 ], 168) 169 170cc_library( 171 name = "fixed_base_exp", 172 srcs = [ 173 "fixed_base_exp.cc", 174 ], 175 hdrs = [ 176 "fixed_base_exp.h", 177 ], 178 deps = [ 179 ":bn_util", 180 ":mont_mul", 181 "//private_join_and_compute/util:status_includes", 182 "@com_google_absl//absl/base", 183 "@com_google_absl//absl/log", 184 "@com_google_absl//absl/strings", 185 ], 186) 187 188cc_library( 189 name = "simultaneous_fixed_bases_exp", 190 srcs = [ 191 "simultaneous_fixed_bases_exp.cc", 192 ], 193 hdrs = [ 194 "simultaneous_fixed_bases_exp.h", 195 ], 196 deps = [ 197 ":bn_util", 198 ":ec_util", 199 ":elgamal", 200 ":mont_mul", 201 ":paillier", 202 "//private_join_and_compute/util:status_includes", 203 "@com_google_absl//absl/strings", 204 ], 205) 206 207cc_test( 208 name = "simultaneous_fixed_bases_exp_test", 209 srcs = [ 210 "simultaneous_fixed_bases_exp_test.cc", 211 ], 212 deps = [ 213 ":elgamal", 214 ":simultaneous_fixed_bases_exp", 215 "//private_join_and_compute/util:status_includes", 216 "//private_join_and_compute/util:status_testing_includes", 217 "@com_github_google_googletest//:gtest_main", 218 ], 219) 220 221cc_library( 222 name = "two_modulus_crt", 223 srcs = [ 224 "two_modulus_crt.cc", 225 ], 226 hdrs = [ 227 "two_modulus_crt.h", 228 ], 229 deps = [ 230 ":bn_util", 231 "@com_google_absl//absl/strings", 232 ], 233) 234 235grpc_proto_library( 236 name = "paillier_proto", 237 srcs = ["paillier.proto"], 238) 239 240cc_library( 241 name = "paillier", 242 srcs = [ 243 "paillier.cc", 244 ], 245 hdrs = [ 246 "paillier.h", 247 ], 248 deps = [ 249 ":bn_util", 250 ":fixed_base_exp", 251 ":paillier_proto", 252 ":two_modulus_crt", 253 "//private_join_and_compute/util:status_includes", 254 "@com_google_absl//absl/container:node_hash_map", 255 "@com_google_absl//absl/log", 256 "@com_google_absl//absl/log:check", 257 "@com_google_absl//absl/strings", 258 ], 259) 260 261cc_library( 262 name = "shanks_discrete_log", 263 srcs = [ 264 "shanks_discrete_log.cc", 265 ], 266 hdrs = [ 267 "shanks_discrete_log.h", 268 ], 269 deps = [ 270 ":bn_util", 271 ":ec_util", 272 ":elgamal", 273 "//private_join_and_compute/util:status_includes", 274 "@com_google_absl//absl/strings", 275 ], 276) 277 278cc_library( 279 name = "camenisch_shoup", 280 srcs = [ 281 "camenisch_shoup.cc", 282 ], 283 hdrs = [ 284 "camenisch_shoup.h", 285 ], 286 deps = [ 287 ":bn_util", 288 ":fixed_base_exp", 289 "//private_join_and_compute/crypto/proto:big_num_cc_proto", 290 "//private_join_and_compute/crypto/proto:camenisch_shoup_cc_proto", 291 "//private_join_and_compute/crypto/proto:proto_util", 292 "//private_join_and_compute/util:status_includes", 293 "@com_google_absl//absl/strings", 294 ], 295) 296 297cc_test( 298 name = "camenisch_shoup_test", 299 srcs = [ 300 "camenisch_shoup_test.cc", 301 ], 302 deps = [ 303 ":bn_util", 304 ":camenisch_shoup", 305 "//private_join_and_compute/crypto/proto:camenisch_shoup_cc_proto", 306 "//private_join_and_compute/crypto/proto:proto_util", 307 "//private_join_and_compute/util:status_includes", 308 "//private_join_and_compute/util:status_testing_includes", 309 "@com_github_google_googletest//:gtest_main", 310 ], 311) 312 313cc_library( 314 name = "pedersen_over_zn", 315 srcs = [ 316 "pedersen_over_zn.cc", 317 ], 318 hdrs = [ 319 "pedersen_over_zn.h", 320 ], 321 deps = [ 322 ":bn_util", 323 ":simultaneous_fixed_bases_exp", 324 "//private_join_and_compute/crypto/proto:big_num_cc_proto", 325 "//private_join_and_compute/crypto/proto:pedersen_cc_proto", 326 "//private_join_and_compute/crypto/proto:proto_util", 327 "//private_join_and_compute/util:status_includes", 328 "@com_google_absl//absl/strings", 329 ], 330) 331 332cc_test( 333 name = "pedersen_over_zn_test", 334 size = "medium", 335 srcs = ["pedersen_over_zn_test.cc"], 336 tags = ["requires-net:external"], 337 deps = [ 338 ":bn_util", 339 ":pedersen_over_zn", 340 "//private_join_and_compute/crypto/proto:pedersen_cc_proto", 341 "//private_join_and_compute/crypto/proto:proto_util", 342 "//private_join_and_compute/util:status_includes", 343 "//private_join_and_compute/util:status_testing_includes", 344 "@com_github_google_googletest//:gtest_main", 345 ], 346) 347 348grpc_proto_library( 349 name = "ec_key_proto", 350 srcs = ["ec_key.proto"], 351) 352 353grpc_proto_library( 354 name = "elgamal_proto", 355 srcs = ["elgamal.proto"], 356) 357