1 /**
2   ******************************************************************************
3   * @file    lib_crypt.h
4   * @author  Application Team
5   * @version V4.4.0
6   * @date    2018-09-27
7   * @brief   CRYPT library.
8   ******************************************************************************
9   * @attention
10   *
11   ******************************************************************************
12   */
13 #ifndef __LIB_CRYPT_H
14 #define __LIB_CRYPT_H
15 
16 #ifdef __cplusplus
17  extern "C" {
18 #endif
19 
20 #include "target.h"
21 
22 //Length
23 #define CRYPT_LENGTH_32    CRYPT_CTRL_LENGTH_32
24 #define CRYPT_LENGTH_64    CRYPT_CTRL_LENGTH_64
25 #define CRYPT_LENGTH_96    CRYPT_CTRL_LENGTH_96
26 #define CRYPT_LENGTH_128   CRYPT_CTRL_LENGTH_128
27 #define CRYPT_LENGTH_160   CRYPT_CTRL_LENGTH_160
28 #define CRYPT_LENGTH_192   CRYPT_CTRL_LENGTH_192
29 #define CRYPT_LENGTH_224   CRYPT_CTRL_LENGTH_224
30 #define CRYPT_LENGTH_256   CRYPT_CTRL_LENGTH_256
31 #define CRYPT_LENGTH_288   CRYPT_CTRL_LENGTH_288
32 #define CRYPT_LENGTH_320   CRYPT_CTRL_LENGTH_320
33 #define CRYPT_LENGTH_352   CRYPT_CTRL_LENGTH_352
34 #define CRYPT_LENGTH_384   CRYPT_CTRL_LENGTH_384
35 #define CRYPT_LENGTH_416   CRYPT_CTRL_LENGTH_416
36 #define CRYPT_LENGTH_448   CRYPT_CTRL_LENGTH_448
37 #define CRYPT_LENGTH_480   CRYPT_CTRL_LENGTH_480
38 #define CRYPT_LENGTH_512   CRYPT_CTRL_LENGTH_512
39 //Nostop
40 #define CRYPT_STOPCPU     (0)
41 #define CRYPT_NOSTOPCPU    CRYPT_CTRL_NOSTOP
42 
43 /* Private macros ------------------------------------------------------------*/
44 #define IS_CRYPT_ADDR(__ADDR__)  (((__ADDR__) < 0x8000) &&\
45                                   (((__ADDR__) & 0x3U) == 0U))
46 
47 #define IS_CRYPT_LENGTH(__LENGTH__)  (((__LENGTH__) == CRYPT_LENGTH_32)  ||\
48                                       ((__LENGTH__) == CRYPT_LENGTH_64)  ||\
49                                       ((__LENGTH__) == CRYPT_LENGTH_32)  ||\
50                                       ((__LENGTH__) == CRYPT_LENGTH_96)  ||\
51                                       ((__LENGTH__) == CRYPT_LENGTH_128) ||\
52                                       ((__LENGTH__) == CRYPT_LENGTH_160) ||\
53                                       ((__LENGTH__) == CRYPT_LENGTH_192) ||\
54                                       ((__LENGTH__) == CRYPT_LENGTH_224) ||\
55                                       ((__LENGTH__) == CRYPT_LENGTH_256) ||\
56                                       ((__LENGTH__) == CRYPT_LENGTH_288) ||\
57                                       ((__LENGTH__) == CRYPT_LENGTH_320) ||\
58                                       ((__LENGTH__) == CRYPT_LENGTH_352) ||\
59                                       ((__LENGTH__) == CRYPT_LENGTH_384) ||\
60                                       ((__LENGTH__) == CRYPT_LENGTH_416) ||\
61                                       ((__LENGTH__) == CRYPT_LENGTH_448) ||\
62                                       ((__LENGTH__) == CRYPT_LENGTH_480) ||\
63                                       ((__LENGTH__) == CRYPT_LENGTH_512))
64 
65 #define IS_CRYPT_NOSTOP(__NOSTOP__)  (((__NOSTOP__) == CRYPT_STOPCPU) || ((__NOSTOP__) == CRYPT_NOSTOPCPU))
66 
67 /* Exported Functions ------------------------------------------------------- */
68 void CRYPT_AddressAConfig(uint16_t AddrA);
69 void CRYPT_AddressBConfig(uint16_t AddrB);
70 void CRYPT_AddressOConfig(uint16_t AddrO);
71 uint8_t CRYPT_GetCarryBorrowBit(void);
72 void CRYPT_StartAdd(uint32_t Length, uint32_t Nostop);
73 void CRYPT_StartMultiply(uint32_t Length, uint32_t Nostop);
74 void CRYPT_StartSub(uint32_t Length, uint32_t Nostop);
75 void CRYPT_StartRShift1(uint32_t Length, uint32_t Nostop);
76 void CRYPT_WaitForLastOperation(void);
77 
78 
79 #ifdef __cplusplus
80 }
81 #endif
82 
83 #endif  /* __LIB_CRYPT_H */
84 
85 /*********************************** END OF FILE ******************************/
86