Mayank Gupta / Mbed OS pelion-example-frdm

Dependencies:   FXAS21002 FXOS8700Q

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 "pal_errors.h"
00023 
00024 fcc_status_e  fcc_convert_kcm_to_fcc_status(kcm_status_e  kcm_result)
00025 {
00026     fcc_status_e  fcc_status = FCC_STATUS_SUCCESS;
00027 
00028     switch (kcm_result) {
00029         case KCM_STATUS_SUCCESS: 
00030             fcc_status = FCC_STATUS_SUCCESS;
00031             break;
00032         case KCM_STATUS_RBP_ERROR:
00033             fcc_status = FCC_STATUS_STORE_ERROR;
00034             break;
00035         case KCM_STATUS_ERROR:
00036         case KCM_STATUS_INVALID_PARAMETER:
00037         case KCM_STATUS_OUT_OF_MEMORY:
00038         case KCM_STATUS_INSUFFICIENT_BUFFER:
00039             fcc_status = FCC_STATUS_KCM_ERROR;
00040             break;
00041         case KCM_STATUS_ITEM_NOT_FOUND:
00042             fcc_status = FCC_STATUS_ITEM_NOT_EXIST;
00043             break;
00044         case KCM_STATUS_STORAGE_ERROR:
00045         case KCM_STATUS_META_DATA_NOT_FOUND:
00046         case KCM_STATUS_META_DATA_SIZE_ERROR:
00047         case KCM_STATUS_NOT_PERMITTED:
00048         case KCM_STATUS_ITEM_IS_EMPTY:
00049         case KCM_STATUS_INVALID_FILE_VERSION:
00050         case KCM_STATUS_UNKNOWN_STORAGE_ERROR:
00051         case KCM_STATUS_NOT_INITIALIZED:
00052         case KCM_STATUS_CLOSE_INCOMPLETE_CHAIN:
00053         case KCM_STATUS_INVALID_NUM_OF_CERT_IN_CHAIN:
00054         case KCM_STATUS_FILE_CORRUPTED:
00055         case KCM_STATUS_FILE_NAME_CORRUPTED:
00056         case KCM_STATUS_INVALID_FILE_ACCESS_MODE:
00057         case KCM_STATUS_CORRUPTED_CHAIN_FILE:
00058         case KCM_STATUS_FILE_NAME_INVALID:
00059         case KCM_STATUS_FILE_NAME_TOO_LONG:
00060             fcc_status = FCC_STATUS_KCM_STORAGE_ERROR;
00061             break;
00062         case KCM_STATUS_SELF_GENERATED_CERTIFICATE_VERIFICATION_ERROR:
00063             fcc_status = FCC_STATUS_CERTIFICATE_PUBLIC_KEY_CORRELATION_ERROR;
00064             break;
00065         case KCM_STATUS_FILE_EXIST:
00066         case KCM_STATUS_KEY_EXIST:
00067             fcc_status = FCC_STATUS_KCM_FILE_EXIST_ERROR;
00068             break;
00069         case KCM_CRYPTO_STATUS_UNSUPPORTED_HASH_MODE:
00070         case KCM_CRYPTO_STATUS_PARSING_DER_PRIVATE_KEY:
00071         case KCM_CRYPTO_STATUS_PARSING_DER_PUBLIC_KEY:
00072         case KCM_CRYPTO_STATUS_PK_KEY_INVALID_FORMAT:
00073         case KCM_CRYPTO_STATUS_INVALID_PK_PUBKEY:
00074         case KCM_CRYPTO_STATUS_ECP_INVALID_KEY:
00075         case KCM_CRYPTO_STATUS_PK_KEY_INVALID_VERSION:
00076         case KCM_CRYPTO_STATUS_PK_PASSWORD_REQUIRED:
00077         case KCM_CRYPTO_STATUS_PRIVATE_KEY_VERIFICATION_FAILED:
00078         case KCM_CRYPTO_STATUS_PUBLIC_KEY_VERIFICATION_FAILED:
00079         case KCM_CRYPTO_STATUS_PK_UNKNOWN_PK_ALG:
00080         case KCM_CRYPTO_STATUS_UNSUPPORTED_CURVE:
00081         case KCM_CRYPTO_STATUS_PARSING_DER_CERT:
00082         case KCM_CRYPTO_STATUS_CERT_EXPIRED:
00083         case KCM_CRYPTO_STATUS_CERT_FUTURE:
00084         case KCM_CRYPTO_STATUS_CERT_MD_ALG:
00085         case KCM_CRYPTO_STATUS_CERT_PUB_KEY_TYPE:
00086         case KCM_CRYPTO_STATUS_CERT_PUB_KEY:
00087         case KCM_CRYPTO_STATUS_CERT_NOT_TRUSTED:
00088         case KCM_CRYPTO_STATUS_INVALID_X509_ATTR:
00089         case KCM_CRYPTO_STATUS_VERIFY_SIGNATURE_FAILED:
00090         case KCM_CRYPTO_STATUS_INVALID_MD_TYPE:
00091         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_SIGNATURE:
00092         case KCM_STATUS_CERTIFICATE_CHAIN_VERIFICATION_FAILED:
00093         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_PRIVATE_KEY:
00094         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_PUBLIC_KEY:
00095         case KCM_CRYPTO_STATUS_INVALID_OID:
00096         case KCM_CRYPTO_STATUS_INVALID_NAME_FORMAT:
00097         case KCM_CRYPTO_STATUS_FAILED_TO_WRITE_CSR:
00098         case KCM_CRYPTO_STATUS_SET_EXTENSION_FAILED:
00099         case KCM_MAX_STATUS:
00100             fcc_status = FCC_STATUS_KCM_CRYPTO_ERROR;
00101             break;
00102 
00103     }
00104     return fcc_status;
00105 }
00106 
00107 
00108 fcc_status_e  fcc_convert_pal_to_fcc_status(palStatus_t pal_result)
00109 {
00110     fcc_status_e  fcc_status = FCC_STATUS_SUCCESS;
00111 
00112     switch (pal_result) {
00113 
00114         case PAL_ERR_INVALID_ARGUMENT :
00115             fcc_status = FCC_STATUS_KCM_ERROR;
00116             break;   
00117         case PAL_ERR_ITEM_EXIST :
00118             fcc_status = FCC_STATUS_KCM_FILE_EXIST_ERROR;
00119             break;
00120         case PAL_ERR_ITEM_NOT_EXIST :
00121             fcc_status = FCC_STATUS_ITEM_NOT_EXIST;
00122             break;
00123         case PAL_ERR_ENTROPY_EXISTS:
00124             fcc_status = FCC_STATUS_ENTROPY_ERROR;
00125             break;
00126         case PAL_ERR_NOT_SUPPORTED :
00127             fcc_status = FCC_STATUS_NOT_SUPPORTED;
00128             break;
00129         default:
00130             fcc_status = FCC_STATUS_ERROR;
00131             break;
00132         
00133     }
00134    
00135     return fcc_status;
00136 }
00137 
00138