From 40aef49e474da7116456e95b46b7799261033f7b Mon Sep 17 00:00:00 2001 From: SecAgg Team Date: Tue, 26 May 2026 12:22:32 -0700 Subject: [PATCH] Introduce Reputable Decryptor service protos. PiperOrigin-RevId: 921614302 --- willow/proto/willow/BUILD | 15 ++++++ willow/proto/willow/reputable_decryptor.proto | 49 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 willow/proto/willow/reputable_decryptor.proto diff --git a/willow/proto/willow/BUILD b/willow/proto/willow/BUILD index f543f23..fe2b5e3 100644 --- a/willow/proto/willow/BUILD +++ b/willow/proto/willow/BUILD @@ -37,6 +37,21 @@ cc_proto_library( deps = [":committee_selector_proto"], ) +proto_library( + name = "reputable_decryptor_proto", + srcs = ["reputable_decryptor.proto"], + deps = [ + ":messages_proto", + + "//willow/proto/shell:shell_ciphertexts_proto", + ], +) + +cc_proto_library( + name = "reputable_decryptor_cc_proto", + deps = [":reputable_decryptor_proto"], +) + proto_library( name = "aggregation_config_proto", srcs = ["aggregation_config.proto"], diff --git a/willow/proto/willow/reputable_decryptor.proto b/willow/proto/willow/reputable_decryptor.proto new file mode 100644 index 0000000..c12d642 --- /dev/null +++ b/willow/proto/willow/reputable_decryptor.proto @@ -0,0 +1,49 @@ +// Copyright 2026 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package secure_aggregation.willow; +import "willow/proto/shell/ciphertexts.proto"; +import "willow/proto/willow/messages.proto"; + +option java_multiple_files = true; +option java_outer_classname = "ReputableDecryptorProto"; + +// Error status. +message ReputableDecryptorStatus { + int32 code = 1; + string message = 2; +} + +// ReputableDecryptorRequest combines individual request messages and is used +// by the replicated/wrapped implementation of the ReputableDecryptor. +message ReputableDecryptorRequest { + oneof msg { + CreateSetupContributionRequest create_setup_contribution = 1; + PartialDecryptionRequest handle_partial_decryption_request = 2; + VerifyKeyContributionsRequest verify_and_aggregate_key_contributions = 3; + } +} + +// ReputableDecryptorResponse combines individual response messages and is used +// by the replicated/wrapped implementation of the ReputableDecryptor. +message ReputableDecryptorResponse { + oneof msg { + SetupContribution create_setup_contribution = 1; + PartialDecryptionResponse handle_partial_decryption_request = 2; + ShellAhePublicKey verify_and_aggregate_key_contributions = 3; + ReputableDecryptorStatus error = 4; + } +}