1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2022 The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker * 4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker * 8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker * 10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Worker #include "TrustyStatus.h" 18*38e8c45fSAndroid Build Coastguard Worker #include "../RpcState.h" 19*38e8c45fSAndroid Build Coastguard Worker 20*38e8c45fSAndroid Build Coastguard Worker namespace android { 21*38e8c45fSAndroid Build Coastguard Worker statusFromTrusty(int rc)22*38e8c45fSAndroid Build Coastguard Workerstatus_t statusFromTrusty(int rc) { 23*38e8c45fSAndroid Build Coastguard Worker LOG_RPC_DETAIL("Trusty error: %d", rc); 24*38e8c45fSAndroid Build Coastguard Worker switch (rc) { 25*38e8c45fSAndroid Build Coastguard Worker case NO_ERROR: 26*38e8c45fSAndroid Build Coastguard Worker return OK; 27*38e8c45fSAndroid Build Coastguard Worker case ERR_NOT_FOUND: 28*38e8c45fSAndroid Build Coastguard Worker return NAME_NOT_FOUND; 29*38e8c45fSAndroid Build Coastguard Worker case ERR_NOT_READY: 30*38e8c45fSAndroid Build Coastguard Worker // We get this error if we try to perform an IPC operation when the 31*38e8c45fSAndroid Build Coastguard Worker // channel is not ready 32*38e8c45fSAndroid Build Coastguard Worker return INVALID_OPERATION; 33*38e8c45fSAndroid Build Coastguard Worker case ERR_NO_MSG: 34*38e8c45fSAndroid Build Coastguard Worker return WOULD_BLOCK; 35*38e8c45fSAndroid Build Coastguard Worker case ERR_NO_MEMORY: 36*38e8c45fSAndroid Build Coastguard Worker return NO_MEMORY; 37*38e8c45fSAndroid Build Coastguard Worker case ERR_INVALID_ARGS: 38*38e8c45fSAndroid Build Coastguard Worker return BAD_VALUE; 39*38e8c45fSAndroid Build Coastguard Worker case ERR_NOT_ENOUGH_BUFFER: 40*38e8c45fSAndroid Build Coastguard Worker return WOULD_BLOCK; 41*38e8c45fSAndroid Build Coastguard Worker case ERR_TIMED_OUT: 42*38e8c45fSAndroid Build Coastguard Worker return TIMED_OUT; 43*38e8c45fSAndroid Build Coastguard Worker case ERR_ALREADY_EXISTS: 44*38e8c45fSAndroid Build Coastguard Worker return ALREADY_EXISTS; 45*38e8c45fSAndroid Build Coastguard Worker case ERR_CHANNEL_CLOSED: 46*38e8c45fSAndroid Build Coastguard Worker return DEAD_OBJECT; 47*38e8c45fSAndroid Build Coastguard Worker case ERR_NOT_ALLOWED: 48*38e8c45fSAndroid Build Coastguard Worker return INVALID_OPERATION; 49*38e8c45fSAndroid Build Coastguard Worker case ERR_NOT_SUPPORTED: 50*38e8c45fSAndroid Build Coastguard Worker return INVALID_OPERATION; 51*38e8c45fSAndroid Build Coastguard Worker case ERR_TOO_BIG: 52*38e8c45fSAndroid Build Coastguard Worker return BAD_INDEX; 53*38e8c45fSAndroid Build Coastguard Worker case ERR_CMD_UNKNOWN: 54*38e8c45fSAndroid Build Coastguard Worker return UNKNOWN_TRANSACTION; 55*38e8c45fSAndroid Build Coastguard Worker case ERR_BAD_STATE: 56*38e8c45fSAndroid Build Coastguard Worker return INVALID_OPERATION; 57*38e8c45fSAndroid Build Coastguard Worker case ERR_BAD_LEN: 58*38e8c45fSAndroid Build Coastguard Worker return NOT_ENOUGH_DATA; 59*38e8c45fSAndroid Build Coastguard Worker case ERR_BAD_HANDLE: 60*38e8c45fSAndroid Build Coastguard Worker return BAD_VALUE; 61*38e8c45fSAndroid Build Coastguard Worker case ERR_ACCESS_DENIED: 62*38e8c45fSAndroid Build Coastguard Worker return PERMISSION_DENIED; 63*38e8c45fSAndroid Build Coastguard Worker default: 64*38e8c45fSAndroid Build Coastguard Worker return UNKNOWN_ERROR; 65*38e8c45fSAndroid Build Coastguard Worker } 66*38e8c45fSAndroid Build Coastguard Worker } 67*38e8c45fSAndroid Build Coastguard Worker statusToTrusty(status_t status)68*38e8c45fSAndroid Build Coastguard Workerint statusToTrusty(status_t status) { 69*38e8c45fSAndroid Build Coastguard Worker switch (status) { 70*38e8c45fSAndroid Build Coastguard Worker case OK: 71*38e8c45fSAndroid Build Coastguard Worker return NO_ERROR; 72*38e8c45fSAndroid Build Coastguard Worker case NO_MEMORY: 73*38e8c45fSAndroid Build Coastguard Worker return ERR_NO_MEMORY; 74*38e8c45fSAndroid Build Coastguard Worker case INVALID_OPERATION: 75*38e8c45fSAndroid Build Coastguard Worker case BAD_VALUE: 76*38e8c45fSAndroid Build Coastguard Worker case BAD_TYPE: 77*38e8c45fSAndroid Build Coastguard Worker return ERR_NOT_VALID; 78*38e8c45fSAndroid Build Coastguard Worker case NAME_NOT_FOUND: 79*38e8c45fSAndroid Build Coastguard Worker return ERR_NOT_FOUND; 80*38e8c45fSAndroid Build Coastguard Worker case PERMISSION_DENIED: 81*38e8c45fSAndroid Build Coastguard Worker return ERR_ACCESS_DENIED; 82*38e8c45fSAndroid Build Coastguard Worker case NO_INIT: 83*38e8c45fSAndroid Build Coastguard Worker return ERR_NOT_CONFIGURED; 84*38e8c45fSAndroid Build Coastguard Worker case ALREADY_EXISTS: 85*38e8c45fSAndroid Build Coastguard Worker return ERR_ALREADY_EXISTS; 86*38e8c45fSAndroid Build Coastguard Worker case DEAD_OBJECT: 87*38e8c45fSAndroid Build Coastguard Worker return ERR_CHANNEL_CLOSED; 88*38e8c45fSAndroid Build Coastguard Worker case BAD_INDEX: 89*38e8c45fSAndroid Build Coastguard Worker return ERR_TOO_BIG; 90*38e8c45fSAndroid Build Coastguard Worker case NOT_ENOUGH_DATA: 91*38e8c45fSAndroid Build Coastguard Worker return ERR_BAD_LEN; 92*38e8c45fSAndroid Build Coastguard Worker case WOULD_BLOCK: 93*38e8c45fSAndroid Build Coastguard Worker return ERR_NO_MSG; 94*38e8c45fSAndroid Build Coastguard Worker case TIMED_OUT: 95*38e8c45fSAndroid Build Coastguard Worker return ERR_TIMED_OUT; 96*38e8c45fSAndroid Build Coastguard Worker case UNKNOWN_TRANSACTION: 97*38e8c45fSAndroid Build Coastguard Worker return ERR_CMD_UNKNOWN; 98*38e8c45fSAndroid Build Coastguard Worker case FDS_NOT_ALLOWED: 99*38e8c45fSAndroid Build Coastguard Worker return ERR_NOT_SUPPORTED; 100*38e8c45fSAndroid Build Coastguard Worker case UNEXPECTED_NULL: 101*38e8c45fSAndroid Build Coastguard Worker return ERR_NOT_VALID; 102*38e8c45fSAndroid Build Coastguard Worker default: 103*38e8c45fSAndroid Build Coastguard Worker return ERR_GENERIC; 104*38e8c45fSAndroid Build Coastguard Worker } 105*38e8c45fSAndroid Build Coastguard Worker } 106*38e8c45fSAndroid Build Coastguard Worker 107*38e8c45fSAndroid Build Coastguard Worker } // namespace android 108