1 /**************************************************************************//**
2  * @file     trng.h
3  * @version  V3.00
4  * @brief    M2L31 series TRNG driver header file
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  * @copyright (C) 2023 Nuvoton Technology Corp. All rights reserved.
8  ******************************************************************************/
9 #ifndef __TRNG_H__
10 #define __TRNG_H__
11 
12 #ifdef __cplusplus
13 extern "C"
14 {
15 #endif
16 
17 /** @addtogroup Standard_Driver Standard Driver
18   @{
19 */
20 
21 /** @addtogroup TRNG_Driver TRNG Driver
22   @{
23 */
24 
25 
26 /** @addtogroup TRNG_EXPORTED_CONSTANTS TRNG Exported Constants
27   @{
28 */
29 
30 /*----------------------------------------------------------------------------------------------*/
31 /*  TRNG_CTL constant definitions.                                                              */
32 /*----------------------------------------------------------------------------------------------*/
33 
34 #define TRNG_CTL_MODE_ENTROPY   (0 << TRNG_CTL_MODE_Pos)    /*!< TRNG MODE for ENTROPY \hideinitializer */
35 #define TRNG_CTL_MODE_NRBG      (1 << TRNG_CTL_MODE_Pos)    /*!< TRNG MODE for NRBG    \hideinitializer */
36 #define TRNG_CTL_MODE_DRBG      (2 << TRNG_CTL_MODE_Pos)    /*!< TRNG MODE for DRBG    \hideinitializer */
37 
38 #define TRNG_CTL_KATSEL_INSTANT (0 << TRNG_CTL_KATSEL_Pos)  /*!< TRNG Known Answer Test for Instantiation \hideinitializer */
39 #define TRNG_CTL_KATSEL_RESEED  (1 << TRNG_CTL_KATSEL_Pos)  /*!< TRNG Known Answer Test for Reseed        \hideinitializer */
40 #define TRNG_CTL_KATSEL_UPDATE  (2 << TRNG_CTL_KATSEL_Pos)  /*!< TRNG Known Answer Test for Generation    \hideinitializer */
41 
42 /*@}*/ /* end of group TRNG_EXPORTED_CONSTANTS */
43 
44 /** @addtogroup TRNG_EXPORTED_FUNCTIONS TRNG Exported Functions
45   @{
46 */
47 
48 
49 int32_t TRNG_Open(void);
50 int32_t TRNG_GenWord(uint32_t *u32RndNum);
51 int32_t TRNG_GenBignum(uint8_t u8BigNum[], int32_t i32Len);
52 int32_t TRNG_GenBignumHex(char cBigNumHex[], int32_t i32Len);
53 
54 
55 /*@}*/ /* end of group TRNG_EXPORTED_FUNCTIONS */
56 
57 /*@}*/ /* end of group TRNG_Driver */
58 
59 /*@}*/ /* end of group Standard_Driver */
60 
61 #ifdef __cplusplus
62 }
63 #endif
64 
65 #endif  /* __TRNG_H__ */
66