Simulated product dispenser

Dependencies:   HTS221

Fork of mbed-cloud-workshop-connect-HTS221 by Jim Carver

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers fcc_utils.c Source File

fcc_utils.c

00001 // ----------------------------------------------------------------------------
00002 // Copyright 2016-2017 ARM Ltd.
00003 //  
00004 // Licensed under the Apache License, Version 2.0 (the "License");
00005 // you may not use this file except in compliance with the License.
00006 // You may obtain a copy of the License at
00007 //  
00008 //     http://www.apache.org/licenses/LICENSE-2.0
00009 //  
00010 // Unless required by applicable law or agreed to in writing, software
00011 // distributed under the License is distributed on an "AS IS" BASIS,
00012 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013 // See the License for the specific language governing permissions and
00014 // limitations under the License.
00015 // ----------------------------------------------------------------------------
00016 
00017 #include "factory_configurator_client.h"
00018 #include "fcc_status.h"
00019 #include "fcc_utils.h"
00020 #include "key_config_manager.h"
00021 #include "pv_error_handling.h"
00022 #include "fcc_sotp.h"
00023 
00024 
00025 const char g_sotp_entropy_data_type_name[] = "EntropyData";
00026 const char g_sotp_rot_data_type_name[] = "ROTData";
00027 const char g_sotp_factory_disable_type_name[] = "FactoryDisableFlag";
00028 const char g_sotp_ca_server_id_type_name[] = "CAServerId";
00029 const char g_sotp_time_type_name[] = "Time";
00030 const char g_sotp_wrong_type_name[] = "Wrong_sotp_type";
00031 
00032 
00033 fcc_status_e  fcc_get_sotp_type_name(sotp_type_e sotp_type,char **sotp_type_name, size_t *sotp_type_name_size)
00034 {
00035 
00036     fcc_status_e  fcc_status = FCC_STATUS_SUCCESS;
00037 
00038     SA_PV_ERR_RECOVERABLE_RETURN_IF((sotp_type_name_size == NULL), fcc_status, "Wrong sotp_type_name_size pointer");
00039 
00040     switch (sotp_type) {
00041     case SOTP_TYPE_ROT:
00042         *sotp_type_name = (char*)g_sotp_rot_data_type_name;
00043         *sotp_type_name_size = (size_t)strlen(g_sotp_rot_data_type_name);
00044         break;
00045     case SOTP_TYPE_FACTORY_DONE:
00046         *sotp_type_name = (char*)g_sotp_factory_disable_type_name;
00047         *sotp_type_name_size = (size_t)strlen(g_sotp_factory_disable_type_name);
00048         break;
00049     case SOTP_TYPE_RANDOM_SEED:
00050         *sotp_type_name = (char*)g_sotp_entropy_data_type_name;
00051         *sotp_type_name_size = (size_t)strlen(g_sotp_entropy_data_type_name);
00052         break;
00053     case SOTP_TYPE_SAVED_TIME:
00054         *sotp_type_name = (char*)g_sotp_time_type_name;
00055         *sotp_type_name_size = (size_t)strlen(g_sotp_time_type_name);
00056         break;
00057     case SOTP_TYPE_TRUSTED_TIME_SRV_ID:
00058         *sotp_type_name = (char*)g_sotp_ca_server_id_type_name;
00059         *sotp_type_name_size = (size_t)strlen(g_sotp_ca_server_id_type_name);
00060         break;
00061     default:
00062         SA_PV_LOG_ERR("Non existent sotp_type provided");
00063         *sotp_type_name = (char*)g_sotp_wrong_type_name;
00064         *sotp_type_name_size = (size_t)strlen(g_sotp_wrong_type_name);
00065         return FCC_STATUS_INVALID_PARAMETER;
00066     }
00067 
00068     return fcc_status;
00069 }
00070 
00071 fcc_status_e  fcc_convert_kcm_to_fcc_status(kcm_status_e  kcm_result)
00072 {
00073     fcc_status_e  fcc_status = FCC_STATUS_SUCCESS;
00074 
00075     switch (kcm_result) {
00076         case KCM_STATUS_SUCCESS:
00077             fcc_status = FCC_STATUS_SUCCESS;
00078             break;
00079         case KCM_STATUS_ERROR:
00080         case KCM_STATUS_INVALID_PARAMETER:
00081         case KCM_STATUS_OUT_OF_MEMORY:
00082         case KCM_STATUS_INSUFFICIENT_BUFFER:
00083             fcc_status = FCC_STATUS_KCM_ERROR;
00084             break;
00085         case KCM_STATUS_ITEM_NOT_FOUND:
00086             fcc_status = FCC_STATUS_ITEM_NOT_EXIST;
00087             break;
00088         case KCM_STATUS_STORAGE_ERROR:
00089         case KCM_STATUS_META_DATA_NOT_FOUND:
00090         case KCM_STATUS_META_DATA_SIZE_ERROR:
00091         case KCM_STATUS_NOT_PERMITTED:
00092         case KCM_STATUS_ITEM_IS_EMPTY:
00093         case KCM_STATUS_INVALID_FILE_VERSION:
00094         case KCM_STATUS_UNKNOWN_STORAGE_ERROR:
00095         case KCM_STATUS_NOT_INITIALIZED:
00096         case KCM_STATUS_CLOSE_INCOMPLETE_CHAIN:
00097         case KCM_STATUS_INVALID_NUM_OF_CERT_IN_CHAIN:
00098         case KCM_STATUS_FILE_CORRUPTED:
00099         case KCM_STATUS_FILE_NAME_CORRUPTED:
00100         case KCM_STATUS_INVALID_FILE_ACCESS_MODE:
00101         case KCM_STATUS_CORRUPTED_CHAIN_FILE:
00102         case KCM_STATUS_FILE_NAME_TOO_LONG:
00103             fcc_status = FCC_STATUS_KCM_STORAGE_ERROR;
00104             break;
00105         case KCM_STATUS_SELF_GENERATED_CERTIFICATE_VERIFICATION_ERROR:
00106             fcc_status = FCC_STATUS_CERTIFICATE_PUBLIC_KEY_CORRELATION_ERROR;
00107             break;
00108         case KCM_STATUS_FILE_EXIST:
00109         case KCM_STATUS_KEY_EXIST:
00110             fcc_status = FCC_STATUS_KCM_FILE_EXIST_ERROR;
00111             break;
00112         case KCM_CRYPTO_STATUS_UNSUPPORTED_HASH_MODE:
00113         case KCM_CRYPTO_STATUS_PARSING_DER_PRIVATE_KEY:
00114         case KCM_CRYPTO_STATUS_PARSING_DER_PUBLIC_KEY:
00115         case KCM_CRYPTO_STATUS_PK_KEY_INVALID_FORMAT:
00116         case KCM_CRYPTO_STATUS_INVALID_PK_PUBKEY:
00117         case KCM_CRYPTO_STATUS_ECP_INVALID_KEY:
00118         case KCM_CRYPTO_STATUS_PK_KEY_INVALID_VERSION:
00119         case KCM_CRYPTO_STATUS_PK_PASSWORD_REQUIRED:
00120         case KCM_CRYPTO_STATUS_PRIVATE_KEY_VERIFICATION_FAILED:
00121         case KCM_CRYPTO_STATUS_PUBLIC_KEY_VERIFICATION_FAILED:
00122         case KCM_CRYPTO_STATUS_PK_UNKNOWN_PK_ALG:
00123         case KCM_CRYPTO_STATUS_UNSUPPORTED_CURVE:
00124         case KCM_CRYPTO_STATUS_PARSING_DER_CERT:
00125         case KCM_CRYPTO_STATUS_CERT_EXPIRED:
00126         case KCM_CRYPTO_STATUS_CERT_FUTURE:
00127         case KCM_CRYPTO_STATUS_CERT_MD_ALG:
00128         case KCM_CRYPTO_STATUS_CERT_PUB_KEY_TYPE:
00129         case KCM_CRYPTO_STATUS_CERT_PUB_KEY:
00130         case KCM_CRYPTO_STATUS_CERT_NOT_TRUSTED:
00131         case KCM_CRYPTO_STATUS_INVALID_X509_ATTR:
00132         case KCM_CRYPTO_STATUS_VERIFY_SIGNATURE_FAILED:
00133         case KCM_CRYPTO_STATUS_INVALID_MD_TYPE:
00134         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_SIGNATURE:
00135         case KCM_STATUS_CERTIFICATE_CHAIN_VERIFICATION_FAILED:
00136         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_PRIVATE_KEY:
00137         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_PUBLIC_KEY:
00138         case KCM_CRYPTO_STATUS_INVALID_OID:
00139         case KCM_CRYPTO_STATUS_INVALID_NAME_FORMAT:
00140         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_CSR:
00141         case KCM_MAX_STATUS:
00142             fcc_status = FCC_STATUS_KCM_CRYPTO_ERROR;
00143             break;
00144 
00145     }
00146     return fcc_status;
00147 }