xref: /aosp_15_r20/external/federated-compute/fcp/protos/federatedcompute/secure_aggregations.proto (revision 14675a029014e728ec732f129a32e299b2da0601)
1*14675a02SAndroid Build Coastguard Worker// Copyright 2022 Google LLC
2*14675a02SAndroid Build Coastguard Worker//
3*14675a02SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*14675a02SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*14675a02SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*14675a02SAndroid Build Coastguard Worker//
7*14675a02SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*14675a02SAndroid Build Coastguard Worker//
9*14675a02SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*14675a02SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*14675a02SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*14675a02SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*14675a02SAndroid Build Coastguard Worker// limitations under the License.
14*14675a02SAndroid Build Coastguard Worker
15*14675a02SAndroid Build Coastguard Workersyntax = "proto3";
16*14675a02SAndroid Build Coastguard Worker
17*14675a02SAndroid Build Coastguard Workerpackage google.internal.federatedcompute.v1;
18*14675a02SAndroid Build Coastguard Worker
19*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/federatedcompute/common.proto";
20*14675a02SAndroid Build Coastguard Workerimport "fcp/secagg/shared/secagg_messages.proto";
21*14675a02SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto";
22*14675a02SAndroid Build Coastguard Worker
23*14675a02SAndroid Build Coastguard Workeroption java_package = "com.google.internal.federatedcompute.v1";
24*14675a02SAndroid Build Coastguard Workeroption java_multiple_files = true;
25*14675a02SAndroid Build Coastguard Worker
26*14675a02SAndroid Build Coastguard Workerservice SecureAggregations {
27*14675a02SAndroid Build Coastguard Worker  // A request sent by the client after completing local (on-device) task
28*14675a02SAndroid Build Coastguard Worker  // computation to notify the server that the client has Aggregation data to
29*14675a02SAndroid Build Coastguard Worker  // upload via the Secure Aggregation protocol. If a client's result is no
30*14675a02SAndroid Build Coastguard Worker  // longer needed (e.g. the reporting goal was already reached for the task),
31*14675a02SAndroid Build Coastguard Worker  // the server will respond with an ABORTED error in the operation status. The
32*14675a02SAndroid Build Coastguard Worker  // operation is completed successfully when the Secure Aggregation protocol is
33*14675a02SAndroid Build Coastguard Worker  // ready to begin.
34*14675a02SAndroid Build Coastguard Worker  rpc StartSecureAggregation(StartSecureAggregationRequest)
35*14675a02SAndroid Build Coastguard Worker      returns (StartSecureAggregationResponse) {}
36*14675a02SAndroid Build Coastguard Worker
37*14675a02SAndroid Build Coastguard Worker  // A request sent by the client indicating the client is ending its
38*14675a02SAndroid Build Coastguard Worker  // participation in the Secure Aggregation protocol.
39*14675a02SAndroid Build Coastguard Worker  //
40*14675a02SAndroid Build Coastguard Worker  // Clients must only call this if they've previously called
41*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregation`.
42*14675a02SAndroid Build Coastguard Worker  //
43*14675a02SAndroid Build Coastguard Worker  // If clients have already received a `StartSecureAggregationResponse`
44*14675a02SAndroid Build Coastguard Worker  // they should use the `ForwardingInfo` from the
45*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregationResponse.secagg_protocol_forwarding_info`
46*14675a02SAndroid Build Coastguard Worker  // response field to construct the URI for this request. Otherwise, clients
47*14675a02SAndroid Build Coastguard Worker  // should use the same `ForwardingInfo` as was used to construct the
48*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregation` request URI.
49*14675a02SAndroid Build Coastguard Worker  rpc AbortSecureAggregation(AbortSecureAggregationRequest)
50*14675a02SAndroid Build Coastguard Worker      returns (AbortSecureAggregationResponse) {
51*14675a02SAndroid Build Coastguard Worker  }
52*14675a02SAndroid Build Coastguard Worker
53*14675a02SAndroid Build Coastguard Worker  // A request sent by the client to advertise its pair of public keys. The
54*14675a02SAndroid Build Coastguard Worker  // server responds with a list of the (pairs of) public keys of all other
55*14675a02SAndroid Build Coastguard Worker  // participating clients.
56*14675a02SAndroid Build Coastguard Worker  //
57*14675a02SAndroid Build Coastguard Worker  // Clients should use the `ForwardingInfo` from the
58*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregationResponse.secagg_protocol_forwarding_info`
59*14675a02SAndroid Build Coastguard Worker  // response field to construct the URI for this request.
60*14675a02SAndroid Build Coastguard Worker  //
61*14675a02SAndroid Build Coastguard Worker  // If the returned operation is not complete, clients should poll for status
62*14675a02SAndroid Build Coastguard Worker  // at the rate specified in the AdvertiseKeysMetadata.
63*14675a02SAndroid Build Coastguard Worker  rpc AdvertiseKeys(AdvertiseKeysRequest)
64*14675a02SAndroid Build Coastguard Worker      returns (AdvertiseKeysResponse) {
65*14675a02SAndroid Build Coastguard Worker  }
66*14675a02SAndroid Build Coastguard Worker
67*14675a02SAndroid Build Coastguard Worker  // A request sent by the client to secret-share its
68*14675a02SAndroid Build Coastguard Worker  // own noise_sk and prf_sk with all the other clients (encrypting shares for
69*14675a02SAndroid Build Coastguard Worker  // client j with their own enc_pk). The server responds with the client's
70*14675a02SAndroid Build Coastguard Worker  // shares of the keys of each other client that sent a ShareKeysRequest.
71*14675a02SAndroid Build Coastguard Worker  //
72*14675a02SAndroid Build Coastguard Worker  // Clients should use the `ForwardingInfo` from the
73*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregationResponse.secagg_protocol_forwarding_info`
74*14675a02SAndroid Build Coastguard Worker  // response field to construct the URI for this request.
75*14675a02SAndroid Build Coastguard Worker  //
76*14675a02SAndroid Build Coastguard Worker  // If the returned operation is not complete, clients should poll for status
77*14675a02SAndroid Build Coastguard Worker  // at the rate specified in the ShareKeysMetadata.
78*14675a02SAndroid Build Coastguard Worker  rpc ShareKeys(ShareKeysRequest) returns (ShareKeysResponse) {
79*14675a02SAndroid Build Coastguard Worker  }
80*14675a02SAndroid Build Coastguard Worker
81*14675a02SAndroid Build Coastguard Worker  // A request sent by the client indicating the successful upload of the
82*14675a02SAndroid Build Coastguard Worker  // client's masked and unmasked results. The server responds with a list of
83*14675a02SAndroid Build Coastguard Worker  // clients that did not successfully upload their results (and therefore are
84*14675a02SAndroid Build Coastguard Worker  // considered dead).
85*14675a02SAndroid Build Coastguard Worker  //
86*14675a02SAndroid Build Coastguard Worker  // Clients should use the `ForwardingInfo` from the
87*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregationResponse.secagg_protocol_forwarding_info`
88*14675a02SAndroid Build Coastguard Worker  // response field to construct the URI for this request.
89*14675a02SAndroid Build Coastguard Worker  //
90*14675a02SAndroid Build Coastguard Worker  // If the returned operation is not complete, clients should poll for status
91*14675a02SAndroid Build Coastguard Worker  // at the rate specified in the SubmitSecureAggregationResultMetadata.
92*14675a02SAndroid Build Coastguard Worker  rpc SubmitSecureAggregationResult(SubmitSecureAggregationResultRequest)
93*14675a02SAndroid Build Coastguard Worker      returns (SubmitSecureAggregationResultResponse) {
94*14675a02SAndroid Build Coastguard Worker  }
95*14675a02SAndroid Build Coastguard Worker
96*14675a02SAndroid Build Coastguard Worker  // A request sent by the client containing information for each other client
97*14675a02SAndroid Build Coastguard Worker  // j. For each client j, The client provides either the share of noise_sk (if
98*14675a02SAndroid Build Coastguard Worker  // client j is dead) OR share of prf_sk (if client j is still alive).
99*14675a02SAndroid Build Coastguard Worker  //
100*14675a02SAndroid Build Coastguard Worker  // If a client's aggregation result is no longer needed for the aggregation
101*14675a02SAndroid Build Coastguard Worker  // (e.g. the reporting goal was already reached for the task), the server will
102*14675a02SAndroid Build Coastguard Worker  // respond with an ABORTED error.
103*14675a02SAndroid Build Coastguard Worker  //
104*14675a02SAndroid Build Coastguard Worker  // Clients should use the `ForwardingInfo` from the
105*14675a02SAndroid Build Coastguard Worker  // `StartSecureAggregationResponse.secagg_protocol_forwarding_info`
106*14675a02SAndroid Build Coastguard Worker  // response field to construct the URI for this request.
107*14675a02SAndroid Build Coastguard Worker  rpc Unmask(UnmaskRequest) returns (UnmaskResponse) {
108*14675a02SAndroid Build Coastguard Worker  }
109*14675a02SAndroid Build Coastguard Worker}
110*14675a02SAndroid Build Coastguard Worker
111*14675a02SAndroid Build Coastguard Worker// --- StartSecureAggregation ---
112*14675a02SAndroid Build Coastguard Workermessage StartSecureAggregationRequest {
113*14675a02SAndroid Build Coastguard Worker  // The id of the aggregation session this client participates in. This value
114*14675a02SAndroid Build Coastguard Worker  // was returned by the server when the client was assigned a task.
115*14675a02SAndroid Build Coastguard Worker  //
116*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
117*14675a02SAndroid Build Coastguard Worker  // request body.
118*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 1
119*14675a02SAndroid Build Coastguard Worker      ;
120*14675a02SAndroid Build Coastguard Worker
121*14675a02SAndroid Build Coastguard Worker  // The authorization token returned by the server when the client was assigned
122*14675a02SAndroid Build Coastguard Worker  // a task.
123*14675a02SAndroid Build Coastguard Worker  //
124*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
125*14675a02SAndroid Build Coastguard Worker  // request body.
126*14675a02SAndroid Build Coastguard Worker  string authorization_token = 2
127*14675a02SAndroid Build Coastguard Worker      ;
128*14675a02SAndroid Build Coastguard Worker}
129*14675a02SAndroid Build Coastguard Worker
130*14675a02SAndroid Build Coastguard Workermessage StartSecureAggregationMetadata {}
131*14675a02SAndroid Build Coastguard Worker
132*14675a02SAndroid Build Coastguard Workermessage StartSecureAggregationResponse {
133*14675a02SAndroid Build Coastguard Worker  // Information to construct the URI to use for continuing the secure
134*14675a02SAndroid Build Coastguard Worker  // aggregation protocol.
135*14675a02SAndroid Build Coastguard Worker  ForwardingInfo secagg_protocol_forwarding_info = 1;
136*14675a02SAndroid Build Coastguard Worker
137*14675a02SAndroid Build Coastguard Worker  // Per-aggregand information.
138*14675a02SAndroid Build Coastguard Worker  map<string, SecureAggregandExecutionInfo> secure_aggregands = 2;
139*14675a02SAndroid Build Coastguard Worker
140*14675a02SAndroid Build Coastguard Worker  // Protocol execution information.
141*14675a02SAndroid Build Coastguard Worker  SecureAggregationProtocolExecutionInfo protocol_execution_info = 3;
142*14675a02SAndroid Build Coastguard Worker
143*14675a02SAndroid Build Coastguard Worker  // Information about where to upload masked result.
144*14675a02SAndroid Build Coastguard Worker  ByteStreamResource masked_result_resource = 4;
145*14675a02SAndroid Build Coastguard Worker
146*14675a02SAndroid Build Coastguard Worker  // Information about where to upload unmasked result (e.g. metrics).
147*14675a02SAndroid Build Coastguard Worker  ByteStreamResource nonmasked_result_resource = 5;
148*14675a02SAndroid Build Coastguard Worker
149*14675a02SAndroid Build Coastguard Worker  // Unique token that the client must include in the subsequent protocol
150*14675a02SAndroid Build Coastguard Worker  // requests.
151*14675a02SAndroid Build Coastguard Worker  string client_token = 6;
152*14675a02SAndroid Build Coastguard Worker}
153*14675a02SAndroid Build Coastguard Worker
154*14675a02SAndroid Build Coastguard Worker// Per-aggregand configuration information.
155*14675a02SAndroid Build Coastguard Workermessage SecureAggregandExecutionInfo {
156*14675a02SAndroid Build Coastguard Worker  // Modulus for secure aggregation.
157*14675a02SAndroid Build Coastguard Worker  //
158*14675a02SAndroid Build Coastguard Worker  // The secure aggregation protocol will compute the sum modulo this modulus.
159*14675a02SAndroid Build Coastguard Worker  //
160*14675a02SAndroid Build Coastguard Worker  // To achieve equivalence with non-modular summation, the modulus must be
161*14675a02SAndroid Build Coastguard Worker  // larger than the sum of all client inputs, given the number of clients
162*14675a02SAndroid Build Coastguard Worker  // participating in the aggregation shard.
163*14675a02SAndroid Build Coastguard Worker  uint64 modulus = 1;
164*14675a02SAndroid Build Coastguard Worker}
165*14675a02SAndroid Build Coastguard Worker
166*14675a02SAndroid Build Coastguard Worker// Dynamic configuration of the Secure Aggregation protocol.
167*14675a02SAndroid Build Coastguard Workermessage SecureAggregationProtocolExecutionInfo {
168*14675a02SAndroid Build Coastguard Worker  // Number of clients that a client may exchange data with while running
169*14675a02SAndroid Build Coastguard Worker  // Secure Aggregation protocol. In the case of a full graph SecAgg protocol
170*14675a02SAndroid Build Coastguard Worker  // this is a total number of clients that started the protocol.
171*14675a02SAndroid Build Coastguard Worker  // In the case of subgraph SecAgg protocol this is a number of neighbours
172*14675a02SAndroid Build Coastguard Worker  // that each client has.
173*14675a02SAndroid Build Coastguard Worker  int32 expected_number_of_clients = 1;
174*14675a02SAndroid Build Coastguard Worker
175*14675a02SAndroid Build Coastguard Worker  // Secure Aggregation client completion threshold. This is a parameter
176*14675a02SAndroid Build Coastguard Worker  // communicated by the server side of Secure Aggregation protocol to each
177*14675a02SAndroid Build Coastguard Worker  // client to establish Shamir sharing of secrets.
178*14675a02SAndroid Build Coastguard Worker  // Additionally, at least `minimum_surviving_clients_for_reconstruction` out
179*14675a02SAndroid Build Coastguard Worker  // of the initial `expected_number_of_clients` must 'survive' in order for
180*14675a02SAndroid Build Coastguard Worker  // the protocol to continue on the client side; otherwise the client will
181*14675a02SAndroid Build Coastguard Worker  // abort its connection.
182*14675a02SAndroid Build Coastguard Worker  int32 minimum_surviving_clients_for_reconstruction = 2;
183*14675a02SAndroid Build Coastguard Worker}
184*14675a02SAndroid Build Coastguard Worker
185*14675a02SAndroid Build Coastguard Worker// --- AbortSecureAggregation ---
186*14675a02SAndroid Build Coastguard Workermessage AbortSecureAggregationRequest {
187*14675a02SAndroid Build Coastguard Worker  // The id of the aggregation session this client participates in. This value
188*14675a02SAndroid Build Coastguard Worker  // was returned by the server when the client was assigned a task.
189*14675a02SAndroid Build Coastguard Worker  //
190*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
191*14675a02SAndroid Build Coastguard Worker  // request body.
192*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 1
193*14675a02SAndroid Build Coastguard Worker      ;
194*14675a02SAndroid Build Coastguard Worker
195*14675a02SAndroid Build Coastguard Worker  // The client token returned by the server when the client was assigned a
196*14675a02SAndroid Build Coastguard Worker  // task.
197*14675a02SAndroid Build Coastguard Worker  //
198*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
199*14675a02SAndroid Build Coastguard Worker  // request body.
200*14675a02SAndroid Build Coastguard Worker  string client_token = 2
201*14675a02SAndroid Build Coastguard Worker      ;
202*14675a02SAndroid Build Coastguard Worker
203*14675a02SAndroid Build Coastguard Worker  // Status code and optional message for why the secure aggregation protocol
204*14675a02SAndroid Build Coastguard Worker  // was aborted.
205*14675a02SAndroid Build Coastguard Worker  Status status = 3;
206*14675a02SAndroid Build Coastguard Worker}
207*14675a02SAndroid Build Coastguard Worker
208*14675a02SAndroid Build Coastguard Workermessage AbortSecureAggregationResponse {}
209*14675a02SAndroid Build Coastguard Worker
210*14675a02SAndroid Build Coastguard Worker// --- AdvertiseKeys ---
211*14675a02SAndroid Build Coastguard Workermessage AdvertiseKeysRequest {
212*14675a02SAndroid Build Coastguard Worker  // The id of the aggregation session this client participates in. This value
213*14675a02SAndroid Build Coastguard Worker  // was returned by the server when the client was assigned a task.
214*14675a02SAndroid Build Coastguard Worker  //
215*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
216*14675a02SAndroid Build Coastguard Worker  // request body.
217*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 1
218*14675a02SAndroid Build Coastguard Worker      ;
219*14675a02SAndroid Build Coastguard Worker
220*14675a02SAndroid Build Coastguard Worker  // The client token returned by the server when the client was assigned a
221*14675a02SAndroid Build Coastguard Worker  // task.
222*14675a02SAndroid Build Coastguard Worker  //
223*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
224*14675a02SAndroid Build Coastguard Worker  // request body.
225*14675a02SAndroid Build Coastguard Worker  string client_token = 2
226*14675a02SAndroid Build Coastguard Worker      ;
227*14675a02SAndroid Build Coastguard Worker
228*14675a02SAndroid Build Coastguard Worker  // A pair of public keys for this client.
229*14675a02SAndroid Build Coastguard Worker  fcp.secagg.AdvertiseKeys advertise_keys = 3;
230*14675a02SAndroid Build Coastguard Worker}
231*14675a02SAndroid Build Coastguard Worker
232*14675a02SAndroid Build Coastguard Workermessage AdvertiseKeysMetadata {
233*14675a02SAndroid Build Coastguard Worker  // The suggested duration between instances of polling the AdvertiseKeys LRO.
234*14675a02SAndroid Build Coastguard Worker  google.protobuf.Duration polling_interval = 1;
235*14675a02SAndroid Build Coastguard Worker}
236*14675a02SAndroid Build Coastguard Worker
237*14675a02SAndroid Build Coastguard Workermessage AdvertiseKeysResponse {
238*14675a02SAndroid Build Coastguard Worker  // Information from the server so that the client can participate in the
239*14675a02SAndroid Build Coastguard Worker  // ShareKeys protocol stage. Contains a list of pairs of public keys, as well
240*14675a02SAndroid Build Coastguard Worker  // as the logging ID for the SecAgg execution.
241*14675a02SAndroid Build Coastguard Worker  fcp.secagg.ShareKeysRequest share_keys_server_request = 1;
242*14675a02SAndroid Build Coastguard Worker}
243*14675a02SAndroid Build Coastguard Worker
244*14675a02SAndroid Build Coastguard Worker// --- ShareKeys ---
245*14675a02SAndroid Build Coastguard Workermessage ShareKeysRequest {
246*14675a02SAndroid Build Coastguard Worker  // The id of the aggregation session this client participates in. This value
247*14675a02SAndroid Build Coastguard Worker  // was returned by the server when the client was assigned a task.
248*14675a02SAndroid Build Coastguard Worker  //
249*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
250*14675a02SAndroid Build Coastguard Worker  // request body.
251*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 1
252*14675a02SAndroid Build Coastguard Worker      ;
253*14675a02SAndroid Build Coastguard Worker
254*14675a02SAndroid Build Coastguard Worker  // The client token returned by the server when the client was assigned a
255*14675a02SAndroid Build Coastguard Worker  // task.
256*14675a02SAndroid Build Coastguard Worker  //
257*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
258*14675a02SAndroid Build Coastguard Worker  // request body.
259*14675a02SAndroid Build Coastguard Worker  string client_token = 2
260*14675a02SAndroid Build Coastguard Worker      ;
261*14675a02SAndroid Build Coastguard Worker
262*14675a02SAndroid Build Coastguard Worker  // Information about the client's participation in the ShareKeys protocol
263*14675a02SAndroid Build Coastguard Worker  // stage. Contains a list of encrypted pairs of key shares (one for each other
264*14675a02SAndroid Build Coastguard Worker  // client).
265*14675a02SAndroid Build Coastguard Worker  fcp.secagg.ShareKeysResponse share_keys_client_response = 3;
266*14675a02SAndroid Build Coastguard Worker}
267*14675a02SAndroid Build Coastguard Worker
268*14675a02SAndroid Build Coastguard Workermessage ShareKeysMetadata {
269*14675a02SAndroid Build Coastguard Worker  // The suggested duration between instances of polling the ShareKeys LRO.
270*14675a02SAndroid Build Coastguard Worker  google.protobuf.Duration polling_interval = 1;
271*14675a02SAndroid Build Coastguard Worker}
272*14675a02SAndroid Build Coastguard Worker
273*14675a02SAndroid Build Coastguard Workermessage ShareKeysResponse {
274*14675a02SAndroid Build Coastguard Worker  // Information from the server so that the client can submit its masked
275*14675a02SAndroid Build Coastguard Worker  // result. Contains a list of shares of other clients' keys encrypted and
276*14675a02SAndroid Build Coastguard Worker  // intended for the client who receives this message.
277*14675a02SAndroid Build Coastguard Worker  fcp.secagg.MaskedInputCollectionRequest
278*14675a02SAndroid Build Coastguard Worker      masked_input_collection_server_request = 1;
279*14675a02SAndroid Build Coastguard Worker}
280*14675a02SAndroid Build Coastguard Worker
281*14675a02SAndroid Build Coastguard Worker// --- SubmitSecureAggregationResult ---
282*14675a02SAndroid Build Coastguard Workermessage SubmitSecureAggregationResultRequest {
283*14675a02SAndroid Build Coastguard Worker  // The id of the aggregation session this client participates in. This value
284*14675a02SAndroid Build Coastguard Worker  // was returned by the server when the client was assigned a task.
285*14675a02SAndroid Build Coastguard Worker  //
286*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
287*14675a02SAndroid Build Coastguard Worker  // request body.
288*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 1
289*14675a02SAndroid Build Coastguard Worker      ;
290*14675a02SAndroid Build Coastguard Worker
291*14675a02SAndroid Build Coastguard Worker  // The client token returned by the server when the client was assigned a
292*14675a02SAndroid Build Coastguard Worker  // task.
293*14675a02SAndroid Build Coastguard Worker  //
294*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
295*14675a02SAndroid Build Coastguard Worker  // request body.
296*14675a02SAndroid Build Coastguard Worker  string client_token = 2
297*14675a02SAndroid Build Coastguard Worker      ;
298*14675a02SAndroid Build Coastguard Worker
299*14675a02SAndroid Build Coastguard Worker  // Name of the resource to which the masked result was uploaded. The blob
300*14675a02SAndroid Build Coastguard Worker  // uploaded at masked_input_resource name must contain a serialized
301*14675a02SAndroid Build Coastguard Worker  // fcp.secagg.MaskedInputCollectionResponse message.
302*14675a02SAndroid Build Coastguard Worker  string masked_result_resource_name = 3;
303*14675a02SAndroid Build Coastguard Worker
304*14675a02SAndroid Build Coastguard Worker  // Name of the resource to which the nonmasked result was uploaded.
305*14675a02SAndroid Build Coastguard Worker  string nonmasked_result_resource_name = 4;
306*14675a02SAndroid Build Coastguard Worker}
307*14675a02SAndroid Build Coastguard Worker
308*14675a02SAndroid Build Coastguard Workermessage SubmitSecureAggregationResultMetadata {
309*14675a02SAndroid Build Coastguard Worker  // The suggested duration between instances of polling the
310*14675a02SAndroid Build Coastguard Worker  // SubmitSecureAggregationResult LRO.
311*14675a02SAndroid Build Coastguard Worker  google.protobuf.Duration polling_interval = 1;
312*14675a02SAndroid Build Coastguard Worker}
313*14675a02SAndroid Build Coastguard Worker
314*14675a02SAndroid Build Coastguard Workermessage SubmitSecureAggregationResultResponse {
315*14675a02SAndroid Build Coastguard Worker  // Information from the server so that the client can participate in the
316*14675a02SAndroid Build Coastguard Worker  // Unmasking protocol stage.
317*14675a02SAndroid Build Coastguard Worker  fcp.secagg.UnmaskingRequest unmasking_server_request = 1;
318*14675a02SAndroid Build Coastguard Worker}
319*14675a02SAndroid Build Coastguard Worker
320*14675a02SAndroid Build Coastguard Worker// --- Unmask ---
321*14675a02SAndroid Build Coastguard Workermessage UnmaskRequest {
322*14675a02SAndroid Build Coastguard Worker  // The id of the aggregation session this client participates in. This value
323*14675a02SAndroid Build Coastguard Worker  // was returned by the server when the client was assigned a task.
324*14675a02SAndroid Build Coastguard Worker  //
325*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
326*14675a02SAndroid Build Coastguard Worker  // request body.
327*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 1
328*14675a02SAndroid Build Coastguard Worker      ;
329*14675a02SAndroid Build Coastguard Worker
330*14675a02SAndroid Build Coastguard Worker  // The client token returned by the server when the client was assigned a
331*14675a02SAndroid Build Coastguard Worker  // task.
332*14675a02SAndroid Build Coastguard Worker  //
333*14675a02SAndroid Build Coastguard Worker  // Note that HTTP clients set this value in the request URL instead of the
334*14675a02SAndroid Build Coastguard Worker  // request body.
335*14675a02SAndroid Build Coastguard Worker  string client_token = 2
336*14675a02SAndroid Build Coastguard Worker      ;
337*14675a02SAndroid Build Coastguard Worker
338*14675a02SAndroid Build Coastguard Worker  // Information about the client's participation in the Unmasking protocol
339*14675a02SAndroid Build Coastguard Worker  // stage.
340*14675a02SAndroid Build Coastguard Worker  fcp.secagg.UnmaskingResponse unmasking_client_response = 3;
341*14675a02SAndroid Build Coastguard Worker}
342*14675a02SAndroid Build Coastguard Worker
343*14675a02SAndroid Build Coastguard Workermessage UnmaskResponse {}
344