leo hendrickson / Mbed OS example-Ethernet-mbed-Cloud-connect
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers fcc_bundle_handler.h Source File

fcc_bundle_handler.h

Go to the documentation of this file.
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 #ifndef __FCC_BUNDLE_HANDLER_H__
00018 #define __FCC_BUNDLE_HANDLER_H__
00019 
00020 #include <stdlib.h>
00021 #include <inttypes.h>
00022 #include "fcc_status.h"
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 /**
00029 * @file fcc_bundle_handler.h
00030 *  \brief factory configurator client bundle handler APIs.
00031 */
00032 
00033 
00034 /** Decodes and processes an inbound device configuration bundle created by FCU.
00035 * Also creates an outbound bundle that should be sent to FCU.
00036 * The function assumes that the bundle includes four groups represented as cbor maps.
00037 * The names of the groups are `SchemeVersion`, `Keys`, `Certificates` and `ConfigParams`.
00038 * Each group contains a list of items, and for each item, there are a number of relevant parameters.
00039 *
00040 * @param encoded_bundle The encoded FCU bundle that is written into a secure storage.
00041 * @param encoded_blob_size The encoded FCU bundle size in bytes.
00042 * @param bundle_response_out The encoded outbound bundle. It may contain data such as CSR and different types of key schemes.
00043 *        The response associates a descriptive error in case of a fault. Will be NULL if response not created successfully.
00044 * @param bundle_response_size_out The encoded outbound bundle size in bytes.
00045 *
00046 * @return
00047 *       FCC_STATUS_SUCCESS in case of success or one of the `::fcc_status_e` errors otherwise.
00048 */
00049 fcc_status_e  fcc_bundle_handler(const uint8_t *encoded_bundle, size_t encoded_bundle_size, uint8_t **bundle_response_out, size_t *bundle_response_size_out);
00050 #ifdef __cplusplus
00051 }
00052 #endif
00053 
00054 #endif //__FCC_BUNDLE_HANDLER_H__