Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-cloud-workshop-connect-HTS221 by
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 }
Generated on Tue Jul 12 2022 19:12:12 by
1.7.2
