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)25TracingClientStatus 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)52TracingClientDropReason 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)101ClientToServerMessageType 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)119ServerToClientMessageType 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)135TracingSecAggServerOutcome 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)151SecAggServerTraceState 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