1 /** 2 ****************************************************************************** 3 * @filestm32wb0x_ll_pka.c 4 * @author MCD Application Team 5 * @brief PKA LL module driver. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2024 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 #if defined(USE_FULL_LL_DRIVER) 19 20 /* Includes ------------------------------------------------------------------*/ 21 #include "stm32wb0x_ll_pka.h" 22 #include "stm32wb0x_ll_bus.h" 23 24 #ifdef USE_FULL_ASSERT 25 #include "stm32_assert.h" 26 #else 27 #define assert_param(expr) ((void)0U) 28 #endif /* USE_FULL_ASSERT */ 29 30 /** @addtogroup STM32WB0x_LL_Driver 31 * @{ 32 */ 33 34 #if defined(PKA) 35 36 /** @addtogroup PKA_LL 37 * @{ 38 */ 39 40 /* Private types -------------------------------------------------------------*/ 41 /* Private variables ---------------------------------------------------------*/ 42 /* Private constants ---------------------------------------------------------*/ 43 /* Private macros ------------------------------------------------------------*/ 44 /** @defgroup PKA_LL_Private_Macros PKA Private Constants 45 * @{ 46 */ 47 #if defined (STM32WB05) 48 #define IS_LL_PKA_MODE(__VALUE__) (((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP) ||\ 49 ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM) ||\ 50 ((__VALUE__) == LL_PKA_MODE_MODULAR_EXP) ||\ 51 ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM_ECC) ||\ 52 ((__VALUE__) == LL_PKA_MODE_ECC_KP_PRIMITIVE) ||\ 53 ((__VALUE__) == LL_PKA_MODE_ECDSA_SIGNATURE) ||\ 54 ((__VALUE__) == LL_PKA_MODE_ECDSA_VERIFICATION) ||\ 55 ((__VALUE__) == LL_PKA_MODE_POINT_CHECK) ||\ 56 ((__VALUE__) == LL_PKA_MODE_RSA_CRT_EXP) ||\ 57 ((__VALUE__) == LL_PKA_MODE_MODULAR_INV) ||\ 58 ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_ADD) ||\ 59 ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_SUB) ||\ 60 ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_MUL) ||\ 61 ((__VALUE__) == LL_PKA_MODE_COMPARISON) ||\ 62 ((__VALUE__) == LL_PKA_MODE_MODULAR_REDUC) ||\ 63 ((__VALUE__) == LL_PKA_MODE_MODULAR_ADD) ||\ 64 ((__VALUE__) == LL_PKA_MODE_MODULAR_SUB) ||\ 65 ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_MUL)) 66 #endif /* STM32WB05 */ 67 #if defined (STM32WB09) 68 #define IS_LL_PKA_MODE(__VALUE__) (((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM_MOD_EXP) ||\ 69 ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM) ||\ 70 ((__VALUE__) == LL_PKA_MODE_MODULAR_EXP) ||\ 71 ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_PARAM_ECC) ||\ 72 ((__VALUE__) == LL_PKA_MODE_ECC_KP_PRIMITIVE) ||\ 73 ((__VALUE__) == LL_PKA_MODE_ECDSA_SIGNATURE) ||\ 74 ((__VALUE__) == LL_PKA_MODE_ECDSA_VERIFICATION) ||\ 75 ((__VALUE__) == LL_PKA_MODE_POINT_CHECK) ||\ 76 ((__VALUE__) == LL_PKA_MODE_RSA_CRT_EXP) ||\ 77 ((__VALUE__) == LL_PKA_MODE_MODULAR_INV) ||\ 78 ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_ADD) ||\ 79 ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_SUB) ||\ 80 ((__VALUE__) == LL_PKA_MODE_ARITHMETIC_MUL) ||\ 81 ((__VALUE__) == LL_PKA_MODE_COMPARISON) ||\ 82 ((__VALUE__) == LL_PKA_MODE_MODULAR_REDUC) ||\ 83 ((__VALUE__) == LL_PKA_MODE_MODULAR_ADD) ||\ 84 ((__VALUE__) == LL_PKA_MODE_MODULAR_SUB) ||\ 85 ((__VALUE__) == LL_PKA_MODE_MONTGOMERY_MUL) ||\ 86 ((__VALUE__) == LL_PKA_MODE_DOUBLE_BASE_LADDER) ||\ 87 ((__VALUE__) == LL_PKA_MODE_ECC_COMPLETE_ADD)) 88 #endif /* STM32WB09 */ 89 /** 90 * @} 91 */ 92 93 /* Private function prototypes -----------------------------------------------*/ 94 95 /* Exported functions --------------------------------------------------------*/ 96 /** @addtogroup PKA_LL_Exported_Functions 97 * @{ 98 */ 99 100 /** @addtogroup PKA_LL_EF_Init 101 * @{ 102 */ 103 104 /** 105 * @brief De-initialize PKA registers (Registers restored to their default values). 106 * @param PKAx PKA Instance. 107 * @retval ErrorStatus 108 * - SUCCESS: PKA registers are de-initialized 109 * - ERROR: PKA registers are not de-initialized 110 */ LL_PKA_DeInit(const PKA_TypeDef * PKAx)111ErrorStatus LL_PKA_DeInit(const PKA_TypeDef *PKAx) 112 { 113 ErrorStatus status = SUCCESS; 114 115 /* Check the parameters */ 116 assert_param(IS_PKA_ALL_INSTANCE(PKAx)); 117 118 if (PKAx == PKA) 119 { 120 /* Force PKA reset */ 121 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_PKA); 122 123 /* Release PKA reset */ 124 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_PKA); 125 } 126 else 127 { 128 status = ERROR; 129 } 130 131 return (status); 132 } 133 #if defined (STM32WB05)|| defined(STM32WB09) 134 /** 135 * @brief Initialize PKA registers according to the specified parameters in PKA_InitStruct. 136 * @param PKAx PKA Instance. 137 * @param PKA_InitStruct pointer to a @ref LL_PKA_InitTypeDef structure 138 * that contains the configuration information for the specified PKA peripheral. 139 * @retval ErrorStatus 140 * - SUCCESS: PKA registers are initialized according to PKA_InitStruct content 141 * - ERROR: Not applicable 142 */ LL_PKA_Init(PKA_TypeDef * PKAx,LL_PKA_InitTypeDef * PKA_InitStruct)143ErrorStatus LL_PKA_Init(PKA_TypeDef *PKAx, LL_PKA_InitTypeDef *PKA_InitStruct) 144 { 145 assert_param(IS_PKA_ALL_INSTANCE(PKAx)); 146 assert_param(IS_LL_PKA_MODE(PKA_InitStruct->Mode)); 147 LL_PKA_Config(PKAx, PKA_InitStruct->Mode); 148 149 return (SUCCESS); 150 } 151 152 /** 153 * @brief Set each @ref LL_PKA_InitTypeDef field to default value. 154 * @param PKA_InitStruct pointer to a @ref LL_PKA_InitTypeDef structure 155 * whose fields will be set to default values. 156 * @retval None 157 */ LL_PKA_StructInit(LL_PKA_InitTypeDef * PKA_InitStruct)158void LL_PKA_StructInit(LL_PKA_InitTypeDef *PKA_InitStruct) 159 { 160 /* Reset PKA init structure parameters values */ 161 162 PKA_InitStruct->Mode = LL_PKA_MODE_MODULAR_EXP; 163 } 164 #endif /* STM32WB05 || STM32WB09 */ 165 166 167 /** 168 * @} 169 */ 170 171 /** 172 * @} 173 */ 174 175 /** 176 * @} 177 */ 178 179 #endif /* defined (PKA) */ 180 181 /** 182 * @} 183 */ 184 185 #endif /* USE_FULL_LL_DRIVER */ 186