1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/auto_init/security/auto_init_atca.c

81 lines
2.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2019 HAW Hamburg
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup sys_auto_init
* @{
* @file
* @brief Initializes cryptoauth devices
*
* @author Lena Boeckmann <lena.boeckmann@haw-hamburg.de>
* @}
*/
#include "log.h"
#include "atca.h"
#include "atca_params.h"
#include "kernel_defines.h"
#define ENABLE_DEBUG 0
#include "debug.h"
#if IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A)
#include "psa/crypto.h"
#include "psa_crypto_se_management.h"
extern psa_drv_se_t atca_methods;
psa_se_config_t atca_config_list[] = { ATCA_CONFIG_LIST };
#endif
ATCADevice atca_devs_ptr[ATCA_NUMOF];
static struct atca_device atca_devs[ATCA_NUMOF];
#if IS_USED(MODULE_PSA_SECURE_ELEMENT_ATECCX08A)
void auto_init_atca(void)
{
DEBUG("[auto_init_atca] Number of secure elements: %d\n", ATCA_NUMOF);
for (unsigned i = 0; i < ATCA_NUMOF; i++) {
int status = initATCADevice((ATCAIfaceCfg *)&atca_params[i].cfg, (ATCADevice)&atca_devs[i]);
if (status != ATCA_SUCCESS) {
LOG_ERROR("[auto_init_atca] error initializing cryptoauth device #%u, status: %d\n",
i, status);
continue;
}
atca_devs_ptr[i] = &atca_devs[i];
DEBUG("[auto_init_atca] Registering Driver with address: %x and location: %lx\n", atca_params[i].cfg.atcai2c.address, (unsigned long) atca_params[i].atca_loc);
status = psa_register_secure_element(atca_params[i].atca_loc,
&atca_methods,
&atca_config_list[i],
&atca_devs[i]);
if (status != PSA_SUCCESS) {
LOG_ERROR(
"[auto_init_atca] PSA Crypto error registering cryptoauth PSA driver\
for device #%u, status: %s\n", i, psa_status_to_humanly_readable(status));
continue;
}
}
}
#else
void auto_init_atca(void)
{
DEBUG("[auto_init_atca] Number of secure elements: %d\n", ATCA_NUMOF);
for (unsigned i = 0; i < ATCA_NUMOF; i++) {
int status = initATCADevice((ATCAIfaceCfg *)&atca_params[i], (ATCADevice)&atca_devs[i]);
if (status != ATCA_SUCCESS) {
LOG_ERROR("[auto_init_atca] error initializing cryptoauth device #%u, status: %d\n",
i, status);
continue;
}
atca_devs_ptr[i] = &atca_devs[i];
}
}
#endif