xref: /aosp_15_r20/external/federated-compute/fcp/secagg/server/secagg_trace_utility.cc (revision 14675a029014e728ec732f129a32e299b2da0601)
1 /*
2  * Copyright 2020 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #include "fcp/secagg/server/secagg_trace_utility.h"
17 
18 #include "fcp/secagg/server/secagg_server_enums.pb.h"
19 #include "fcp/secagg/server/tracing_schema.h"
20 #include "fcp/secagg/shared/secagg_messages.pb.h"
21 
22 namespace fcp {
23 namespace secagg {
24 
ClientStatusType(ClientStatus client_status)25 TracingClientStatus ClientStatusType(ClientStatus client_status) {
26   switch (client_status) {
27     case (ClientStatus::READY_TO_START):
28       return TracingClientStatus_ReadyToStart;
29     case (ClientStatus::DEAD_BEFORE_SENDING_ANYTHING):
30       return TracingClientStatus_DeadBeforeSendingAnything;
31     case (ClientStatus::ADVERTISE_KEYS_RECEIVED):
32       return TracingClientStatus_AdvertiseKeysReceived;
33     case (ClientStatus::DEAD_AFTER_ADVERTISE_KEYS_RECEIVED):
34       return TracingClientStatus_DeadAfterAdvertiseKeysReceived;
35     case (ClientStatus::SHARE_KEYS_RECEIVED):
36       return TracingClientStatus_ShareKeysReceived;
37     case (ClientStatus::DEAD_AFTER_SHARE_KEYS_RECEIVED):
38       return TracingClientStatus_DeadAfterShareKeysReceived;
39     case (ClientStatus::MASKED_INPUT_RESPONSE_RECEIVED):
40       return TracingClientStatus_MaskedInputResponseReceived;
41     case (ClientStatus::DEAD_AFTER_MASKED_INPUT_RESPONSE_RECEIVED):
42       return TracingClientStatus_DeadAfterMaskedInputResponseReceived;
43     case (ClientStatus::UNMASKING_RESPONSE_RECEIVED):
44       return TracingClientStatus_UnmaskingResponseReceived;
45     case (ClientStatus::DEAD_AFTER_UNMASKING_RESPONSE_RECEIVED):
46       return TracingClientStatus_DeadAfterUnmaskingResponseReceived;
47     default:
48       return TracingClientStatus_Unknown;
49   }
50 }
51 
ClientDropReasonType(ClientDropReason reason_code)52 TracingClientDropReason ClientDropReasonType(ClientDropReason reason_code) {
53   switch (reason_code) {
54     case (ClientDropReason::SENT_ABORT_MESSAGE):
55       return TracingClientDropReason_SentAbortMessage;
56     case (ClientDropReason::UNEXPECTED_MESSAGE_TYPE):
57       return TracingClientDropReason_UnexpectedMessageType;
58     case (ClientDropReason::UNKNOWN_MESSAGE_TYPE):
59       return TracingClientDropReason_UnknownMessageType;
60     case (ClientDropReason::ADVERTISE_KEYS_UNEXPECTED):
61       return TracingClientDropReason_AdvertiseKeysUnexpected;
62     case (ClientDropReason::EMPTY_PUBLIC_KEY):
63       return TracingClientDropReason_EmptyPublicKey;
64     case (ClientDropReason::NO_ADVERTISE_KEYS):
65       return TracingClientDropReason_NoAdvertiseKeys;
66     case (ClientDropReason::SHARE_KEYS_UNEXPECTED):
67       return TracingClientDropReason_ShareKeysUnexpected;
68     case (ClientDropReason::WRONG_NUMBER_OF_KEY_SHARES):
69       return TracingClientDropReason_WrongNumberOfKeyShares;
70     case (ClientDropReason::MISSING_KEY_SHARE):
71       return TracingClientDropReason_MissingKeyShare;
72     case (ClientDropReason::EXTRA_KEY_SHARE):
73       return TracingClientDropReason_ExtraKeyShare;
74     case (ClientDropReason::NO_SHARE_KEYS):
75       return TracingClientDropReason_NoShareKeys;
76     case (ClientDropReason::MASKED_INPUT_UNEXPECTED):
77       return TracingClientDropReason_MaskedInputUnexpected;
78     case (ClientDropReason::INVALID_MASKED_INPUT):
79       return TracingClientDropReason_InvalidMaskedInput;
80     case (ClientDropReason::NO_MASKED_INPUT):
81       return TracingClientDropReason_NoMaskedInput;
82     case (ClientDropReason::UNMASKING_RESPONSE_UNEXPECTED):
83       return TracingClientDropReason_UnmaskingResponseUnexpected;
84     case (ClientDropReason::INVALID_UNMASKING_RESPONSE):
85       return TracingClientDropReason_InvalidUnmaskingResponse;
86     case (ClientDropReason::NO_UNMASKING_RESPONSE):
87       return TracingClientDropReason_NoUnmaskingResponse;
88     case (ClientDropReason::INVALID_PUBLIC_KEY):
89       return TracingClientDropReason_InvalidPublicKey;
90     case (ClientDropReason::SERVER_PROTOCOL_ABORT_CLIENT):
91       return TracingClientDropReason_ServerProtocolAbortClient;
92     case (ClientDropReason::EARLY_SUCCESS):
93       return TracingClientDropReason_EarlySuccess;
94     case (ClientDropReason::CONNECTION_CLOSED):
95       return TracingClientDropReason_ConnectionClosed;
96     default:
97       return TracingClientDropReason_Unknown;
98   }
99 }
100 
GetClientToServerMessageType(const ClientToServerWrapperMessage & message)101 ClientToServerMessageType GetClientToServerMessageType(
102     const ClientToServerWrapperMessage& message) {
103   switch (message.message_content_case()) {
104     case ClientToServerWrapperMessage::MESSAGE_CONTENT_NOT_SET:
105       return ClientToServerMessageType_MessageContentNotSet;
106     case ClientToServerWrapperMessage::kAbort:
107       return ClientToServerMessageType_Abort;
108     case ClientToServerWrapperMessage::kAdvertiseKeys:
109       return ClientToServerMessageType_AdvertiseKeys;
110     case ClientToServerWrapperMessage::kShareKeysResponse:
111       return ClientToServerMessageType_ShareKeysResponse;
112     case ClientToServerWrapperMessage::kMaskedInputResponse:
113       return ClientToServerMessageType_MaskedInputResponse;
114     case ClientToServerWrapperMessage::kUnmaskingResponse:
115       return ClientToServerMessageType_UnmaskingResponse;
116   }
117 }
118 
GetServerToClientMessageType(const ServerToClientWrapperMessage & message)119 ServerToClientMessageType GetServerToClientMessageType(
120     const ServerToClientWrapperMessage& message) {
121   switch (message.message_content_case()) {
122     case ServerToClientWrapperMessage::kAbort:
123       return ServerToClientMessageType_Abort;
124     case ServerToClientWrapperMessage::kShareKeysRequest:
125       return ServerToClientMessageType_ShareKeysRequest;
126     case ServerToClientWrapperMessage::kMaskedInputRequest:
127       return ServerToClientMessageType_MaskedInputRequest;
128     case ServerToClientWrapperMessage::kUnmaskingRequest:
129       return ServerToClientMessageType_UnmaskingRequest;
130     default:
131       return ServerToClientMessageType_MessageContentNotSet;
132   }
133 }
134 
ConvertSecAccServerOutcomeToTrace(SecAggServerOutcome outcome)135 TracingSecAggServerOutcome ConvertSecAccServerOutcomeToTrace(
136     SecAggServerOutcome outcome) {
137   switch (outcome) {
138     case (SecAggServerOutcome::EXTERNAL_REQUEST):
139       return TracingSecAggServerOutcome_ExternalRequest;
140     case (SecAggServerOutcome::NOT_ENOUGH_CLIENTS_REMAINING):
141       return TracingSecAggServerOutcome_NotEnoughClientsRemaining;
142     case (SecAggServerOutcome::UNHANDLED_ERROR):
143       return TracingSecAggServerOutcome_UnhandledError;
144     case (SecAggServerOutcome::SUCCESS):
145       return TracingSecAggServerOutcome_Success;
146     default:
147       return TracingSecAggServerOutcome_Unknown;
148   }
149 }
150 
TracingState(SecAggServerStateKind state_kind)151 SecAggServerTraceState TracingState(SecAggServerStateKind state_kind) {
152   switch (state_kind) {
153     case SecAggServerStateKind::ABORTED:
154       return SecAggServerTraceState_Aborted;
155     case SecAggServerStateKind::COMPLETED:
156       return SecAggServerTraceState_Completed;
157     case SecAggServerStateKind::PRNG_RUNNING:
158       return SecAggServerTraceState_PrngRunning;
159     case SecAggServerStateKind::R0_ADVERTISE_KEYS:
160       return SecAggServerTraceState_R0AdvertiseKeys;
161     case SecAggServerStateKind::R1_SHARE_KEYS:
162       return SecAggServerTraceState_R1ShareKeys;
163     case SecAggServerStateKind::R2_MASKED_INPUT_COLLECTION:
164       return SecAggServerTraceState_R2MaskedInputCollection;
165     case SecAggServerStateKind::R3_UNMASKING:
166       return SecAggServerTraceState_R3Unmasking;
167     default:
168       return SecAggServerTraceState_UnknownState;
169   }
170 }
171 
172 }  // namespace secagg
173 }  // namespace fcp
174