mirror of
https://github.com/STMicroelectronics/STM32CubeF4.git
synced 2025-05-02 22:17:06 +08:00
88 lines
3.0 KiB
C
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 */
|