lib_crypt.h 5.1 KB

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