2021-03-03 14:55:52 +01:00

88 lines
3.0 KiB
C

/**
******************************************************************************
* @brief Header file of mbed TLS HW crypto (CRYP) implementation.
******************************************************************************
* @attention
*
* Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
* Copyright (C) 2019-2020 STMicroelectronics, All Rights Reserved
*
* This software component is licensed by ST under Apache 2.0 license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* https://opensource.org/licenses/Apache-2.0
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __CRYP_H
#define __CRYP_H
#if defined(MBEDTLS_AES_ALT) || defined(MBEDTLS_CCM_ALT) || defined(MBEDTLS_GCM_ALT)
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
/* include the appropriate header file */
#include "stm32<xxxxx>_hal.h"
#if defined(MBEDTLS_THREADING_C)
#include "mbedtls/threading.h"
#endif
/* macros --------------------------------------------------------------------*/
/*
* 32-bit integer manipulation macros (big endian)
*/
#ifndef GET_UINT32_BE
#define GET_UINT32_BE(n,b,i) \
do { \
(n) = ( (uint32_t) (b)[(i) ] << 24 ) \
| ( (uint32_t) (b)[(i) + 1] << 16 ) \
| ( (uint32_t) (b)[(i) + 2] << 8 ) \
| ( (uint32_t) (b)[(i) + 3] ); \
} while( 0 )
#endif
#ifndef PUT_UINT32_BE
#define PUT_UINT32_BE(n,b,i) \
do { \
(b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
(b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
(b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
(b)[(i) + 3] = (unsigned char) ( (n) ); \
} while( 0 )
#endif
/* constants -----------------------------------------------------------------*/
#define ST_CRYP_TIMEOUT 1000 /* timeout (in ms) for the crypto processor */
/* defines -------------------------------------------------------------------*/
/* AES 192 bits key length may be optional in the HW */
#if defined CRYP_KEYSIZE_192B
#define USE_AES_KEY192 1
#else
#define USE_AES_KEY192 0
#endif /* USE_AES_KEY192 */
/* variables -----------------------------------------------------------------*/
#if defined(MBEDTLS_THREADING_C)
extern mbedtls_threading_mutex_t cryp_mutex;
extern unsigned char cryp_mutex_started;
#endif /* MBEDTLS_THREADING_C */
extern unsigned int cryp_context_count;
/* functions prototypes ------------------------------------------------------*/
extern void cryp_zeroize(void *v, size_t n);
#ifdef __cplusplus
}
#endif
#endif /* MBEDTLS_AES_ALT or MBEDTLS_CCM_ALT or MBEDTLS_GCM_ALT */
#endif /*__CRYP_H */